1. 程式人生 > >go語言學習 - 引用路徑和包

go語言學習 - 引用路徑和包

ack int main light 語言 避免 沖突 turn 很多

// demo/x/a/A.go
package math  // 在 x/a 目錄下沒有采用默認的與目錄同名的包名也是可以的,這樣正好測試出引用用的是目錄路徑,調用卻用的是代碼文件中聲明的包名

func Add(x,y int) int {
	return x + y
}

//////////////////////////////

// demo/y/a/A.go
package math // 兩個不同路徑下定義了相同的包名

func Mul(x,y int) int {
	return x * y
}

//////////////////////////////

// demo/main.go
package main

import (

//可以給這個路徑下的代碼文件包指定一個別名,這樣就不管代碼中用的什麽包名,還可以避免不同路徑下包名沖突的問題
	"./x/a" 

//import的實際上是代碼文件的目錄路徑,不過 一個路徑可以有很多代碼文件,但這些代碼文件必須都在相同的一個包下
	mathx "./y/a" 

	"fmt"

)

func main() {
	
	//默認情況最後一級目錄名和代碼文件聲明的包名是相同的
	// 這裏故意聲明為不同 就測試出了 調用時用的其實不是最後一級 目錄名 而是代碼文件聲明的 包名
	fmt.Println(math.Add(2, 3))
	
	//使用指定的別名調用包內的函數,
	fmt.Println(mathx.Mul(2, 3)) 
  
}

go語言學習 - 引用路徑和包