十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
import (
成都創(chuàng)新互聯公司專業(yè)為企業(yè)提供南華網站建設、南華做網站、南華網站設計、南華網站制作等企業(yè)網站建設、網頁設計與制作、南華企業(yè)網站模板建站服務,10多年南華做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
"fmt"
"reflect"
)
func reflecType(x interface{}){
v := reflect.TypeOf(x)
fmt.Println("type:%v\n", v)
fmt.Println("type name:%v , rtpe kind:%v \n", v.getName(), v.getType())
}
type Cat struct{}
//通過反射設置變量的值
func reflectSetValue1(x interface{}){
v := reflect.ValueOf(x)
if v.Kind() == reflect.Int64{
v.SetInt(200) //修改的是副本, reflect 包會引發(fā)panic
}
}
//通過反射設置變量的值
func reflectSetValue2(x interface{}){
v := reflect.ValueOf(x)
//反射中使用Elem()獲取指針對應的值
if v.Elem().Kind() == reflect.Int64{
v.Elem().SetInt(200)
}
}
func main(){
var a float32 = 3.14
reflectType(a) //type name:float32 type kind:float32
var b int64 = 100
reflectType(b) // type name :int64 type kind :int64
var c = Cat{}
reflectType(c) // type name :Cat type kind :struct
reflectSetValue1(b)
fmt.Println(b) //依然為100
reflectSetValue2(b)
}
1.下載go的windows下的安裝包:
也可以下載源代碼,用MinGW編譯。先配置好MinGW的環(huán)境,再運行all.bat即可。
MingW:
2.下載gocode,用于go的補全提示:
gocode 的github地址:
要安裝git,在windows下,通常用msysgit。
再在cmd下安裝:
go get -u github.com/nsf/gocode
也可以下載代碼,直接用go build來編譯,會生成gocode.exe。
3.在eclipse中安裝插件:
4.配置插件:
(1).配置go的編譯器
(2).配置gocode(可選),這里我用的是eclipse插件自帶的gocode。
(3).配置gdb,做調試用(可選)
如果安裝了MingW,可以在安裝目錄下找到gdb。
5.測試是否成功
新建一個go工程,再建立一個hello.go。如下圖:
gdb調試如下(要在console中用輸入命令來調試):
6.其它
2012年3月31日:
目前這個eclipse插件,只能把代碼放在cmd包中才能運行。
貌似現在流行的是Sublime Text2 + gocode。Sublime Text也的確比較好用。
======================
Eclipse平臺下配置Go語言開發(fā)環(huán)境(Win7)
《Go語言編程》中寫到:“從功能和易用性等方面考慮, Eclipse+GoEclipse、LiteIDE這兩個環(huán)境在所有IDE里面是表現最好的”,所以筆者打算采用Eclipse+GoEclipse開發(fā)環(huán)境。
Eclipse平臺下配置Go語言開發(fā)環(huán)境步驟:
1、安裝JDK和Eclipse
建議JDK1.6及以上版本。Eclipse3.6及以上版本。
2、安裝GoEclipse插件
在Eclipse中點擊菜單“Help”-》“Install New Software”打開如下對話框,添加go插件的安裝地址:,
按提示一步一步操作即可,下載時可能會遇到網絡問題,可使用goagent或其他代理。
3、安裝并配置Go的編譯器
下載地址:
下載時請注意版本,應選擇windows-386的版本。
安裝完后重啟Eclipse,并通過菜單項“Window”-》“Preferences”-》“Go”打開Go語言的配置選項框。如下圖:
選擇Go的安裝路徑即可,如筆者的安裝路徑是F:\Work\Go
4、配置調試器(可選)
需要先安裝MinGW,下載地址:
安裝完之后,通過菜單項“Window”-》“Preferences”-》“Go”-》“Debugger”打開調試器的配置選項框。
將GDB路徑配置為:MinGW安裝目錄下的gdb.exe文件即可。
5、配置代碼自動補全(可選)
需要配置gocode,可使用goEclipse插件自帶的版本,也可以自己下載:
筆者使用的是goEclipse插件自帶的版本,配置方式如下:
通過菜單項“Window”-》“Preferences”-》“Go”-》“Gocode”打開配置選項框。
將Gocode的路徑配置為:goEclipse的安裝路徑下的gocode.exe文件,如
F:\Work\eclipse\plugins\com.googlecode.goclipse.gocode_0.7.6.v450\tools\windows_386\gocode.exe
6、配置支持Import遠程包(可選)
為了支持Import遠程包,最好裝個gowin-env。下載地址:。 如果下的是壓縮包,請把它解壓到C盤。例如,C:\gowin-env。里面有個Console.bat是以后使用go get的環(huán)境。舉例:有個文件a.go,里面import?(
"fmt"
"github.com/astaxie/beedb"
_?"github.com/ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動Console.bat,然后在該命令行窗口,進入c:\go\src目錄下,執(zhí)行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go?會自動下載該遠程包并編譯和安裝這些包。
7、go install: no install location for directory *** outside GOPATH錯誤的處理
由于每一個Go程序都必須包含一個main包以及一個main()函數,因此如果沒有main包就會導致上述錯誤。
What Doesn't Kill Me Makes Me Stronger
是的,Go語言需要使用service接口來實現服務器端的功能,例如處理HTTP請求、接收和發(fā)送數據等等。是的,Go語言需要使用service接口來實現服務器端的功能,例如處理HTTP請求、接收和發(fā)送數據等等。
相比較 C 和 Java 等其它語言而言,Go 語言中的 switch 結構使用上更加靈活。它接受任意形式的表達式,例如:
switch var1 {
case val1:
...
case val2:
...
default:
...
}
變量 var1 可以是任何類型,而 val1 和 val2 則可以是同類型的任意值。類型不被局限于常量或整數,但必須是相同的類型;或者最終結果為相同類型的表達式。前花括號{必須和 switch 關鍵字在同一行。 您可以同時測試多個可能符合條件的值,使用逗號分割它們,例如:case val1, val2, val3。每一個 case 分支都是唯一的,從上至下逐一測試,直到匹配為止。一旦成功地匹配到每個分支,在執(zhí)行完相應代碼后就會退出整個 switch 代碼塊,也就是說你不需要特別使用 break 語句來表示結束。
Go語言里面switch默認相當于每個case最后帶有break,匹配成功后不會自動向下執(zhí)行其他case,而是跳出整個switch。
本教程介紹 Go 中多模塊工作區(qū)的基礎知識。使用多模塊工作區(qū),您可以告訴 Go 命令您正在同時在多個模塊中編寫代碼,并輕松地在這些模塊中構建和運行代碼。
在本教程中,您將在共享的多模塊工作區(qū)中創(chuàng)建兩個模塊,對這些模塊進行更改,并在構建中查看這些更改的結果。
本教程需要 go1.18 或更高版本。使用go.dev/dl中的鏈接確保您已在 Go 1.18 或更高版本中安裝了 Go 。
首先,為您要編寫的代碼創(chuàng)建一個模塊。
1、打開命令提示符并切換到您的主目錄。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,為您的代碼創(chuàng)建一個名為工作區(qū)的目錄。
3、初始化模塊
我們的示例將創(chuàng)建一個hello依賴于 golang.org/x/example 模塊的新模塊。
創(chuàng)建你好模塊:
使用 . 添加對 golang.org/x/example 模塊的依賴項go get。
在 hello 目錄下創(chuàng)建 hello.go,內容如下:
現在,運行 hello 程序:
在這一步中,我們將創(chuàng)建一個go.work文件來指定模塊的工作區(qū)。
在workspace目錄中,運行:
該go work init命令告訴為包含目錄中模塊的工作空間go創(chuàng)建一個文件 。go.work./hello
該go命令生成一個go.work如下所示的文件:
該go.work文件的語法與go.mod相同。
該go指令告訴 Go 應該使用哪個版本的 Go 來解釋文件。它類似于文件中的go指令go.mod 。
該use指令告訴 Go在進行構建時hello目錄中的模塊應該是主模塊。
所以在模塊的任何子目錄中workspace都會被激活。
2、運行工作區(qū)目錄下的程序
在workspace目錄中,運行:
Go 命令包括工作區(qū)中的所有模塊作為主模塊。這允許我們在模塊中引用一個包,即使在模塊之外。在模塊或工作區(qū)之外運行go run命令會導致錯誤,因為該go命令不知道要使用哪些模塊。
接下來,我們將golang.org/x/example模塊的本地副本添加到工作區(qū)。然后,我們將向stringutil包中添加一個新函數,我們可以使用它來代替Reverse.
在這一步中,我們將下載包含該模塊的 Git 存儲庫的副本golang.org/x/example,將其添加到工作區(qū),然后向其中添加一個我們將從 hello 程序中使用的新函數。
1、克隆存儲庫
在工作區(qū)目錄中,運行git命令來克隆存儲庫:
2、將模塊添加到工作區(qū)
該go work use命令將一個新模塊添加到 go.work 文件中。它現在看起來像這樣:
該模塊現在包括example.com/hello模塊和 `golang.org/x/example 模塊。
這將允許我們使用我們將在模塊副本中編寫的新代碼,而不是使用命令stringutil下載的模塊緩存中的模塊版本。
3、添加新功能。
我們將向golang.org/x/example/stringutil包中添加一個新函數以將字符串大寫。
將新文件夾添加到workspace/example/stringutil包含以下內容的目錄:
4、修改hello程序以使用該功能。
修改workspace/hello/hello.go的內容以包含以下內容:
從工作區(qū)目錄,運行
Go 命令在go.work文件指定的hello目錄中查找命令行中指定的example.com/hello模塊 ,同樣使用go.work文件解析導入golang.org/x/example。
go.work可以用來代替添加replace 指令以跨多個模塊工作。
由于這兩個模塊在同一個工作區(qū)中,因此很容易在一個模塊中進行更改并在另一個模塊中使用它。
現在,要正確發(fā)布這些模塊,我們需要發(fā)布golang.org/x/example 模塊,例如在v0.1.0. 這通常通過在模塊的版本控制存儲庫上標記提交來完成。發(fā)布完成后,我們可以增加對 golang.org/x/example模塊的要求hello/go.mod:
這樣,該go命令可以正確解析工作區(qū)之外的模塊。