一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Golang - Go語言基礎(chǔ)學(xué)習(xí)教程

Go語言基礎(chǔ)學(xué)習(xí)教程

2020-04-30 11:56軒脈刃 Golang

這篇文章主要介紹了Go語言基礎(chǔ)知識,包括基本語法、語句、數(shù)組等的定義與用法,需要的朋友可以參考下

本文實例講述了Go語言基礎(chǔ)知識。分享給大家供大家參考,具體如下:

GO文件目錄結(jié)構(gòu)

Go語言基礎(chǔ)學(xué)習(xí)教程

該圖是go-windows的目錄結(jié)構(gòu)

如圖,go的程序應(yīng)該是在gopath文件夾下的,分為bin, pkg, 和src三個子文件夾

src文件夾:每個次級文件夾(如demo)就是代表一個go項目,里面存放源程序

bin文件夾:go的每個項目生成的二進制可執(zhí)行程序。windows下會生成.exe文件,linux下會生成可執(zhí)行文件。Go的最大特色之一就是可移植性,就是說,當(dāng)生成一個demo.exe之后,將這個exe文件放在任意一臺windows系統(tǒng)上(即使沒有安裝go安裝包),也是可以執(zhí)行的。這是讓PHP,Python等腳本語言望成莫及的。

pkg文件夾:第三方庫。里面存放你的項目中引用的第三方庫(非官方已經(jīng)提供的庫)。

Go基礎(chǔ)知識

變量賦值:(有下面幾種形式, 都是將a 設(shè)置為 int 12)

復(fù)制代碼 代碼如下:
var a
a = 12
a := 12
a,b :=12,23

常量賦值:

 

1 itoa使用

復(fù)制代碼 代碼如下:
const(
a = iota
b
)

iota是go的常量賦值自增量,上面代碼將a設(shè)置為0,b設(shè)置為1

 

2 string

go中string是常量,只能用雙引號來表示。

a := "this is string"

a[0] = 'c' (這個是錯誤的,會報錯)

如果要做上面的操作應(yīng)該這樣:

復(fù)制代碼 代碼如下:
a := "this is string"
c := []bytes(a)
c[0] = 'c'
d := string(c)

3 循環(huán)和選擇結(jié)構(gòu)

 

go中沒有do while,循環(huán)結(jié)構(gòu)只有for。選擇結(jié)構(gòu)有if和switch

if語句

復(fù)制代碼 代碼如下:
if err := file.Chmod(777); err != nil {
return err
}

切結(jié):左括號必須和if在同一行,因此
復(fù)制代碼 代碼如下:
if err := file.Chmod(777); err != nil
{ //這個在Go語句中是非法的
return err
}

for循環(huán)
復(fù)制代碼 代碼如下:
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
list := []string{"aaa", "bbb", "ccc"}
for _,v := range list{
fmt.Print("%s", v)
}
//這里使用了一個range,key和value分別是int和string類型,key是序號,從0開始,value是值

 

switch語句

switch和其他語言差不多,只有一個,它不需要break,查詢到一個滿足條件的,執(zhí)行,然后跳出

復(fù)制代碼 代碼如下:
switch a {
case "test1":
fmt.Print("test1")
case "test2","test3":
fmt.Print("testOhter")
default:
fmt.Print("NoTest")
}

array, slice和map

 

array就是平時使用的數(shù)組,和C語言中的數(shù)組是一樣的

復(fù)制代碼 代碼如下:
var a [10]int
a[0] = 1
a[1] = 2

二維數(shù)組:
復(fù)制代碼 代碼如下:
a := [2][2]int{{1,2}, {3,4}}

 

slice和array接近,slice理解為array的指針,使用make進行內(nèi)存分配

復(fù)制代碼 代碼如下:
sl := make([]int, 10)

 

array和slice的轉(zhuǎn)換的說明使用摘錄《學(xué)習(xí)go語言》的一段:

Go語言基礎(chǔ)學(xué)習(xí)教程

想要擴展slice,append和copy兩個內(nèi)建函數(shù)。

(PS:區(qū)別內(nèi)建函數(shù)和第三方庫函數(shù)的區(qū)別是,內(nèi)建函數(shù)是小寫字母開頭,如copy(),第三方庫函數(shù)是首字母大寫,如fmt.Print())

Go語言基礎(chǔ)學(xué)習(xí)教程

map結(jié)構(gòu)是一個hash映射

復(fù)制代碼 代碼如下:
ages := map[string]int {
"lili" : 13,
"nick":23,
"jacky":55,
}

這里注意一下,很多語言在列出這樣結(jié)構(gòu)的時候,最后一個逗號往往都要求省略(55后面的逗號),但是Go語言中這個逗號是必須的。

 

練習(xí)題:

1 創(chuàng)建一個基于for的簡單的循環(huán)。使其循環(huán)10次,并且使用fmt包打印出計數(shù)器的值。

2 用goto修改1的循環(huán),不可使用for

3 再次改寫1的循環(huán),使其遍歷一個array,并將array打印到屏幕上

4 編寫一個逆轉(zhuǎn)字符串的程序,例如:"foobar"打印成為"raboof";

貼出我的答案:

(關(guān)于第四題,有很多種解法,更多詳細(xì)請看:http://stackoverflow.com/questions/1752414/how-to-reverse-a-string-in-go)

復(fù)制代碼 代碼如下:
package main
import (
"fmt"
)
func main(){
ForExample()
fmt.Println("----------------------")
GoExample()
fmt.Println("----------------------")
ArrExample()
fmt.Println("----------------------")
Revert("testRevert hah")
}
func ForExample(){
for i:= 0; i < 10; i++ {
fmt.Println(i)
}
}
func GoExample(){
i := 0
I:
fmt.Println(i)
i++
if(i < 10) {
goto I
}
}
func ArrExample(){
arr := [10]int{0,1,2,3,4,5,6,7,8,9}
for _,val := range arr{
fmt.Println(val)
}
}
func Revert(s string){
var result string
for _,val := range s{
result = string(val) + result
}
fmt.Println(result)
}

 

希望本文所述對大家Go語言程序設(shè)計有所幫助。

 

延伸 · 閱讀

精彩推薦
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang通脈之?dāng)?shù)據(jù)類型詳情

    Golang通脈之?dāng)?shù)據(jù)類型詳情

    這篇文章主要介紹了Golang通脈之?dāng)?shù)據(jù)類型,在編程語言中標(biāo)識符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語言中標(biāo)識符允許由...

    4272021-11-24
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • GolangGolang中Bit數(shù)組的實現(xiàn)方式

    Golang中Bit數(shù)組的實現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang如何使用struct的tag屬性的詳細(xì)介紹

    golang如何使用struct的tag屬性的詳細(xì)介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細(xì)介紹,從例子說起,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網(wǎng)11352020-05-21
  • Golanggo日志系統(tǒng)logrus顯示文件和行號的操作

    go日志系統(tǒng)logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,...

    helight2992020-05-14
主站蜘蛛池模板: 毛片在线观看网站 | 日韩精品免费一区二区 | 啊好大好爽 | 国产99er66在线视频 | 成功精品影院 | 大陆国语自产精品视频在 | 国产精品视频二区不卡 | 欧美福利二区 | 国外成品精品1688 | 日本人泡妞18xxⅹ | 黄网国产 | 成人操 | 国产欧美日韩视频在线观看一区二区 | 美女班主任下面好爽好湿好紧 | 欧美草逼网站 | 日本在线观看www鲁啊鲁视频 | 国产精品久久久久久久久久久久久久 | 亚洲无线一二三区2021 | 草莓视频看污 | 免费观看的毛片 | 亚洲精品国产一区二区在线 | 国产一级毛片国语版 | 色婷婷激婷婷深爱五月老司机 | a国产在线| 亚洲 欧美 国产 综合首页 | 亚洲精品国产成人中文 | 四虎影院网址大全 | 欧美日韩国产一区二区三区伦 | 国产福利不卡视频在免费 | 日本高清在线播放一区二区三区 | 高跟丝袜人妖sissy露出调教 | 国内精品自产拍在线观看91 | 双性小说肉 | 性做久久久久免费观看 | 日本xxxxn1819| 我的绝色岳每雯雯 | 青青草原国产在线 | 亚洲欧洲日产国码 最新 | 波多洁野衣一二区三区 | 荡女人人爱 | 免费看男人使劲躁女人小说 |