国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go 語(yǔ)言入門指南

這篇具有很好參考價(jià)值的文章主要介紹了Go 語(yǔ)言入門指南。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Go 語(yǔ)言入門指南

學(xué)一門語(yǔ)言先看看helloworld吧,感覺(jué)go結(jié)合了好多語(yǔ)言的方式,寫起來(lái)一會(huì)像python一會(huì)像c++,java差不多。反正語(yǔ)法挺奇特

package main

import "fmt"

func main() {
	fmt.Println("HelloWorld")
}
go語(yǔ)言特點(diǎn):

高性能、高并發(fā)

語(yǔ)法簡(jiǎn)單,學(xué)習(xí)曲線平緩

豐富的標(biāo)準(zhǔn)庫(kù)

完善的工具鏈

靜態(tài)鏈接

快速編譯

跨平臺(tái)

垃圾回收

首先聽(tīng)到老師說(shuō) go語(yǔ)言編譯賊快,1秒鐘左右,我(c++選手)聽(tīng)到簡(jiǎn)直大吃一驚啊,真神奇

基礎(chǔ)語(yǔ)法

首先go是強(qiáng)類型語(yǔ)言,每一個(gè)變量都有自己的變量類型,常見(jiàn)的有:字符串,整數(shù),浮點(diǎn)型,布爾類型,另外go中也有指針(只不過(guò)用法就是解引用和取地址)

go語(yǔ)言中字符串是內(nèi)置類型,可通過(guò)加號(hào)直接拼接,也同時(shí)能用等于號(hào)比較倆個(gè)字符串

下面是變量聲明及其定義

var name string // 聲明
var name string = "name" //聲明并賦初值
var name = "name" //自動(dòng)推導(dǎo)類型為string

name := "name" //也可以省略var 和類型直接自動(dòng)推導(dǎo)
/*其他類型同上幾乎差不多*/
分支結(jié)構(gòu)
if - else :

go 中的if - else和其他語(yǔ)言差不多,有些細(xì)節(jié)需要注意

if true{ // 花括號(hào)必須加
	...
}else{ //else必須位于這里
    
}
// if - else if 
if true{
	...
}else if true{
	...
}else{
	...	
}
switch-case

switch 中 可以放 變量,常量 ,字符串, case中也可以放表達(dá)式,用起來(lái)很是方便

switch v{
	case 1 , 2 : // 可以并列 , 然后沒(méi)有break
	case 3:
	default:
} 
switch {
	case  retInt() == v: //表達(dá)式
		...
	case  v == 2:
		...
	default:
		...
	} 
循環(huán)結(jié)構(gòu)

go 語(yǔ)言中只有一個(gè)for

for{	//類似 while(true)死循環(huán)
	...
}
for i < 10{ //類似while(i < 10)
	...
}
for i:=0; i < 10; i++{ //正常for循環(huán),三個(gè)表達(dá)式也可以省略,但是分號(hào)得在昂
	...
}
數(shù)組

數(shù)組的話和其他語(yǔ)言類似,具有編號(hào)且長(zhǎng)度確定的元素序列

var a[5] int //聲明一個(gè)長(zhǎng)度為5的int型數(shù)組
b := [5]int{1,2,3,4,5} //聲明并定義
c := [...]int{1,2,3,4,5}//不想寫括號(hào)里的5也可以寫...來(lái)根據(jù)后面初始化的數(shù)量賦值
var twoD [2][3]int//二維數(shù)組
切片

go語(yǔ)言中一般很少用數(shù)組,用切片更方便一些

切片可以任意更改長(zhǎng)度

	s := make([]string, 3) //創(chuàng)建一個(gè)切片 初始長(zhǎng)度為3
	s[0] = "a"
	s[1] = "b"
	s[2] = "c"
	s = append(s, "d") //數(shù)組不能用這個(gè)方法
	fmt.Println(s) // [a b 3 d] 

切片也可以這樣聲明,一開始總搞混切片和數(shù)組,其實(shí)就是切片方括號(hào)沒(méi)值而已,數(shù)組有值

	var s  []string //切片也可以這樣聲明
	s = append(s, "a")
	s = append(s, "b")
	fmt.Println(s) // [a b]

現(xiàn)在解釋一一下為什么s = append(s, “a”)還需要在重新給s賦值呢,雖然切片可以動(dòng)態(tài)變長(zhǎng),其實(shí)切片底層是維護(hù)了一個(gè)數(shù)組的,也就是說(shuō)他初始上就是個(gè)數(shù)組,只不過(guò)有一定大小,如果你append添加元素沒(méi)有超過(guò)數(shù)組,那沒(méi)事,但是超過(guò)數(shù)組大小,他就會(huì)重新弄一個(gè)更大的數(shù)組然后把值拷貝進(jìn)去,最后把地址返回出來(lái),所以你得讓他重新等于s。(對(duì)于c++同學(xué)應(yīng)該是類似與vector的東東)

對(duì)切片可以有cap方法查看其底層數(shù)組大小 , len方法是真實(shí)元素個(gè)數(shù)
	var s []string
	s = append(s, "a")
	s = append(s, "b")
	s = append(s, "c")
	fmt.Println(s)
	fmt.Println(cap(s)) // 4 
	fmt.Println(len(s)) // 3
切片遍歷時(shí)也可以像python的切片一樣
	s[0:len(s)]  // 這樣使用
	// 數(shù)組也可以 只不過(guò)數(shù)組一這樣用返回的類型也就是切片類型了
map

這個(gè)map和其他語(yǔ)言的hashmap、字典差不多

	m := make(map[string]int , 3)//key是string value是int  初始大小設(shè)置為3								 	//也可以不設(shè)置
	m["name"] = 2
	fmt.Println(m["name"])
	delete(m , "name")//在m中刪除key為name的
range

下面來(lái)介紹range。對(duì)于一個(gè) slice(切片) 或者一個(gè) map 的話,我們可以用 range 來(lái)快速遍歷,這樣代碼能夠更加簡(jiǎn)潔。 range 遍歷的時(shí)候,對(duì)于數(shù)組會(huì)返回兩個(gè)值,第一個(gè)是索引,第二個(gè)是對(duì)應(yīng)位置的值。如果我們不需要索引的話,我們可以用下劃線來(lái)忽略。

	nums := []int{2, 3, 4}
	sum := 0
	for i, num := range nums { //返回?cái)?shù)組的 下標(biāo) 和值
		sum += num
		if num == 2 {
			fmt.Println("index:", i, "num:", num) // index: 0 num: 2
		}	
	}
	fmt.Println(sum) // 9
	m := map[string]string{"a": "A", "b": "B"}
	for k, v := range m {  //返回key和value
		fmt.Println(k, v) // a A; b B
	}
	for k := range m {//返回key
		fmt.Println("key", k) // key a; key b
	}
函數(shù)

這個(gè)是 Golang 里面一個(gè)簡(jiǎn)單的實(shí)現(xiàn)兩個(gè)變量相加的函數(shù)。 Golang 和其他很多語(yǔ)言不一樣的是,變量類型是后置的。Golang 里面的函數(shù)原生支持返回多個(gè)值。在實(shí)際的業(yè)務(wù)邏輯代碼里面幾乎所有的函數(shù)都返回兩個(gè)值,第一個(gè)是真正的返回結(jié)果,第二個(gè)值是一個(gè)錯(cuò)誤信息。

func add(a  int , b int) int ,err {//a int , b int == a , b int倆種方式都一樣
	return a + b		//后面的是返回值
}
func add(a , b int)(int , error){ //可返回多個(gè)值
	return a + b , nil
}

func Tmp(a , b int){
	func() int {//還可以在函數(shù)內(nèi)部定義一個(gè)匿名函數(shù),類似別的語(yǔ)言lambda函數(shù)
		return 5
	}()//加上()表示直接調(diào)用
}

結(jié)構(gòu)體
type student struct { //定義方式 type + 名字 + struct
	name string //小寫變量名相當(dāng)于私有,只有自己包的才可以訪問(wèn),
	Age  int //大寫變量名相當(dāng)于公有 , 外面包也可以訪問(wèn)
}
	stus := []student{ 
		{name: "小王子", Age: 18}, //可以指定變量成員賦值
		{name: "大王八", Age: 9000},
		{name: "娜扎", Age: 23},
	}
結(jié)構(gòu)體函數(shù)

相比其他語(yǔ)言,結(jié)構(gòu)體成員函數(shù)是在外面定義的

type person struct {
	name, city string
	age        int8
}
//	(接收者變量 接收者類型) 方法名(參數(shù)列表) (返回參數(shù))
//	不可修改成員的值
// 方法與函數(shù)的區(qū)別是,函數(shù)不屬于任何類型,方法屬于特定的類型。
func (p person) Dream() { 
	fmt.Printf("%s的夢(mèng)想是學(xué)好Go語(yǔ)言!\n", p.name)
}
// 可修改成員的值
func (p *person) SetAge(newAge int8) {
	p.age = newAge
}

簡(jiǎn)單語(yǔ)法結(jié)構(gòu)就介紹這么多了,剩下的太多了慢慢介紹文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-605409.html

到了這里,關(guān)于Go 語(yǔ)言入門指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Go語(yǔ)言入門指南:基礎(chǔ)語(yǔ)法和常用特性解析(上)

    Go語(yǔ)言入門指南:基礎(chǔ)語(yǔ)法和常用特性解析(上)

    Go是一種靜態(tài)類型的編譯語(yǔ)言,常常被稱作是21世紀(jì)的C語(yǔ)言。Go語(yǔ)言是一個(gè)開源項(xiàng)目,可以免費(fèi)獲取編譯器、庫(kù)、配套工具的源代碼,也是高性能服務(wù)器和應(yīng)用程序的熱門選擇。 Go語(yǔ)言可以運(yùn)行在類UNIX系統(tǒng)——比如Linux、OpenBSD、Microsoft Windows等操作系統(tǒng)上。 因?yàn)镚o語(yǔ)言的特性,

    2024年02月12日
    瀏覽(23)
  • Go 語(yǔ)言入門指南: 環(huán)境搭建、基礎(chǔ)語(yǔ)法和常用特性解析 | 青訓(xùn)營(yíng)

    Go 語(yǔ)言入門指南: 環(huán)境搭建、基礎(chǔ)語(yǔ)法和常用特性解析 | 青訓(xùn)營(yíng)

    Go 是一個(gè)開源的編程語(yǔ)言,它能讓構(gòu)造簡(jiǎn)單、可靠且高效的軟件變得容易。 Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發(fā),后來(lái)還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時(shí)候發(fā)布了Go 1穩(wěn)定版本?,F(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且

    2024年02月14日
    瀏覽(24)
  • 【GoLang入門教程】Go語(yǔ)言工程結(jié)構(gòu)詳述

    【GoLang入門教程】Go語(yǔ)言工程結(jié)構(gòu)詳述

    前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站:人工智能 前言 當(dāng)創(chuàng)建一個(gè)Go語(yǔ)言項(xiàng)目時(shí),良好的工程結(jié)構(gòu)是確保項(xiàng)目可維護(hù)性、可擴(kuò)展性和清晰性的關(guān)鍵。 雖然Go本身沒(méi)有強(qiáng)制性的項(xiàng)目結(jié)構(gòu)要求,但是采用一致性

    2024年01月24日
    瀏覽(99)
  • 【Go語(yǔ)言】Golang保姆級(jí)入門教程 Go初學(xué)者chapter3

    【Go語(yǔ)言】Golang保姆級(jí)入門教程 Go初學(xué)者chapter3

    下劃線“_”本身在Go中一個(gè)特殊的標(biāo)識(shí)符,成為空標(biāo)識(shí)符。可以代表任何其他的標(biāo)識(shí)符,但是他對(duì)應(yīng)的值就會(huì)被忽略 僅僅被作為站維度使用, 不能作為標(biāo)識(shí)符使用 因?yàn)镚o語(yǔ)言中沒(méi)有private public 所以標(biāo)記變量首字母大寫代表其他包可以使用 小寫就是不可使用的 注意:Go語(yǔ)言中

    2024年02月13日
    瀏覽(92)
  • 【Go語(yǔ)言】Golang保姆級(jí)入門教程 Go初學(xué)者chapter2

    【Go語(yǔ)言】Golang保姆級(jí)入門教程 Go初學(xué)者chapter2

    setting的首選項(xiàng) 一個(gè)程序就是一個(gè)世界 變量是程序的基本組成單位 變量的使用步驟 [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-zuxG8imp-1691479164956)(https://cdn.staticaly.com/gh/hudiework/img@main/image-20230726152905139.png)] 變量表示內(nèi)存中的一個(gè)存儲(chǔ)區(qū) 注意:

    2024年02月14日
    瀏覽(577)
  • 【Go語(yǔ)言】Golang保姆級(jí)入門教程 Go初學(xué)者介紹chapter1

    【Go語(yǔ)言】Golang保姆級(jí)入門教程 Go初學(xué)者介紹chapter1

    Golang的學(xué)習(xí)方向 區(qū)塊鏈研發(fā)工程師: 去中心化 虛擬貨幣 金融 Go服務(wù)器端、游戲軟件工程師 : C C++ 處理日志 數(shù)據(jù)打包 文件系統(tǒng) 數(shù)據(jù)處理 很厲害 處理大并發(fā) Golang分布式、云計(jì)算軟件工程師:盛大云 cdn 京東 消息推送 分布式文件系統(tǒng) 2、Golang的應(yīng)用領(lǐng)域 區(qū)塊鏈應(yīng)用:區(qū)塊鏈

    2024年02月15日
    瀏覽(128)
  • 【Golang入門教程】Go語(yǔ)言變量的初始化

    【Golang入門教程】Go語(yǔ)言變量的初始化

    強(qiáng)烈推薦 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站: 人工智能 推薦一個(gè)個(gè)人工作,日常中比較常用的人工智能工具,無(wú)需魔法,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站: 人工智能工具 引言 在Go語(yǔ)言中,變量

    2024年04月17日
    瀏覽(106)
  • 【GoLang入門教程】Go語(yǔ)言幾種標(biāo)準(zhǔn)庫(kù)介紹(六)

    【GoLang入門教程】Go語(yǔ)言幾種標(biāo)準(zhǔn)庫(kù)介紹(六)

    前言 上一篇,我們介紹了image、IO、math三個(gè)庫(kù),這篇我們繼續(xù)介紹剩下的庫(kù) 幾種庫(kù) Net庫(kù) (網(wǎng)絡(luò)庫(kù),支持 Socket、HTTP、郵件、RPC、SMTP 等) 在 Go 語(yǔ)言的標(biāo)準(zhǔn)庫(kù)中, net 包提供了對(duì)網(wǎng)絡(luò)操作的支持,包括基本的網(wǎng)絡(luò)協(xié)議、Socket 編程、HTTP 客戶端和服務(wù)器等。 net 包包含多個(gè)子包,其

    2024年02月02日
    瀏覽(97)
  • 【GoLang入門教程】Go語(yǔ)言幾種標(biāo)準(zhǔn)庫(kù)介紹(五)

    【GoLang入門教程】Go語(yǔ)言幾種標(biāo)準(zhǔn)庫(kù)介紹(五)

    前言 上一篇,我們介紹了fmt、Go、html 三個(gè)庫(kù),這篇我們繼續(xù)介紹剩下的庫(kù) 幾種庫(kù) image庫(kù) (常見(jiàn)圖形格式的訪問(wèn)及生成) 在 Go 語(yǔ)言的標(biāo)準(zhǔn)庫(kù)中, image 包提供了對(duì)圖像的基本操作和處理功能。 這個(gè)包定義了 Image 接口和一些基本的圖像類型,同時(shí)也包含了一些實(shí)現(xiàn)了該接口的具

    2024年02月03日
    瀏覽(98)
  • 【GoLang入門教程】Go語(yǔ)言幾種標(biāo)準(zhǔn)庫(kù)介紹(八)

    【GoLang入門教程】Go語(yǔ)言幾種標(biāo)準(zhǔn)庫(kù)介紹(八)

    強(qiáng)烈推薦 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站:人工智能 前言 上一篇,我們介紹了plugin、reflect、regexp三個(gè)庫(kù),這篇我們繼續(xù)介紹剩下的庫(kù) 幾種庫(kù) runtime庫(kù) ( 運(yùn)行時(shí)接口) 在 Go 語(yǔ)言的標(biāo)準(zhǔn)庫(kù)中, runtime 包

    2024年01月19日
    瀏覽(93)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包