iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
自我挑戰組

Go to 放棄系列 第 8

go note3-> import

  • 分享至 

  • xImage
  •  

1
touch main.go

package main

import "fmt"

func main() {
	fmt.Println(helloworld())
}

touch helloworld.go

package main

func helloworld() string {
	return "hello world"
}

下command

go run main.go helloworld.go

同一層資料夾的go,package必須相同,例如範例兩隻package都是main

mkdir helloworld
mv helloworld.go ./helloworld

export GOPATH=/var/go1

vi ./helloworld/helloworld.go

package helloworld

func HelloWorld() string { // export必須為大寫
	return "hello world"
}

vi main.go

package main

import (
	"fmt"
	"github.com/go-training/test/helloworld" // 通常以{網域名}{帳戶名}{專案名稱},一切皆以gopath的src下為路徑
)

func main() {
	fmt.Println(helloworld.HelloWorld()) // 引入package name去調用其func
}

四種import

import "github.com/go-training/test/helloworld"

{package Name}.{method name}()

2
別名

import {alias} "github.com/go-training/test/helloworld"

{alias}.{method name}()

3
use dot

import . "github.com/go-training/test/helloworld"

{method name}()

此時package會到main.go同層,直接呼叫method即可使用
不建議用此方法import,維護code會很麻煩

4
use underscore
vi ./helloworld/helloworld.go

package helloworld

import "fmt"

func init() {
	fmt.Println("init helloworld")
}
func HelloWorld() string { // export必須為大寫
	return "hello world"
}

vi main.go

package main

import (
	"fmt"
	_ "github.com/go-training/test/helloworld" // 通常以{網域名}{帳戶名}{專案名稱},一切皆以gopath的src下為路徑
)

func main() {
	fmt.Println("eee") // 引入package name去調用其func
}

https://ithelp.ithome.com.tw/upload/images/20181023/20112477NTMirOzIXK.png


上一篇
go note2
下一篇
go note4=>宣告
系列文
Go to 放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言