1. 程式人生 > >Golang 初入坑時一些特別的語法知識點

Golang 初入坑時一些特別的語法知識點

(CSDN使用新的編輯器了!但是還是沒有Golang語言啊,掀桌)

環境:Sublime3  語言:Go

總起:

個人主要接觸是C系列的語言為主(像是C++、Java、C#),所以習慣上這類語言編寫的時候非常輕鬆。

當時在寫lua的時候記錄過一些lua特別(奇葩?)的地方,作為給自己的一些提醒,不過當時也沒寫成部落格,下次寫lua的時候再整理一下。

剛學完無聞的教程,先來整理一下Golang語法上一些特殊的地方,可能不是很完整,主要留作編寫程式碼時的查閱。

特殊之處:

變數的申明和初始化

// 基本變數初始化的三種方式
var str1 string = "你好"
var str2 = "Hello"
str3 := "こんにちは"

// 陣列初始化的三種方式
var arr1 [3]int
arr2 := [3]int{1, 2, 3}
arr3 := [...]int{1, 2, 3, 4, 5}

// 指標的使用
p1 := &arr1
p2 := new([10]int)

// 注:	在golang中直接在函式中傳遞一般都為值傳遞,
//		需要引用傳遞必須使用指標的方式

// slice的初始化 一種go獨有的高階指標
var slice1 []int
slice2 := arr1[1:]
slice3 := make([]int, 3, 6)

// 注:	slice用當前容量和最大容量的概念,
//		例中的slice3當前容量為3,最大容量為6,
//		分別使用len(slice3)和cap(slice3)取得。
//		操作方式有append(slice3, ... )新增,copy(tar,sou)拷貝

// map的初始化
var m1 map[int]string = make(map[int]string)
m2 := make(map[int]string)

// 匿名函式
fun1 := func() {}

// chan WaitGroup
chan1 := make(chan bool)
wg := sync.WaitGroup{}

條件語句

i := 1
// if的兩種形式
if i > 0 { }
if i := 0; i == 0 { }

// for的四種形式
for { break }
for i == 0 { }
for i := 0; i < 1; i++ { }
for k, v := range m1 { fmt.Println(k, v) }

// switch
switch i {
case 1:
case 2:
}
switch i := 1; {
case i == 1:
case i == 2:
}

// 注:	go中的switch有很多不同之處,
//		case判斷成功後,只會執行當前語句塊,想要繼續判斷使用fallthrough,
//		switch中可以執行類似第二種的條件檢測

struct

type Person interface {
	Name() string
}

type Teacher struct {
	name  string
	class int
}

func (t Teacher) Name() string {
	return t.name
}

func (t *Teacher) ChangeClass(other int) {
	t.class = other
}

func (t *Teacher) AddStudents(stus ...int) {
}

型別轉換

// 型別轉換
str4 := string(65) // 得到A
str5 := strconv.Itoa(65)

t := &Teacher{"老王", 3}
t.ChangeClass(4)

// 介面轉類
var p Person = t
if tTmp, ok := p.(*Teacher); ok {
	fmt.Println(tTmp.Name())
}
switch p.(type) {
case *Teacher:
}

異常與恢復

// 異常與恢復
defer func() {}()

// 注:	defer相當於finally,
//		但他是函式執行完或拋異常後,從後往前執行
defer func() {
	// recover恢復程式,繼續執行
	if err := recover(); err != nil {
		fmt.Println(err)
	}
}()
panic("Painc") // 拋異常

個人:

學習的時候,前面的基本沒什麼問題,到併發那塊就有點懵逼了,而Golang最精華的所在的就是併發吧,等下次仔細研究一下。



相關推薦

Golang 一些特別語法知識點

(CSDN使用新的編輯器了!但是還是沒有Golang語言啊,掀桌) 環境:Sublime3  語言:Go 總起: 個人主要接觸是C系列的語言為主(像是C++、Java、C#),所以習慣上這類語言編寫

spring的幾種常用標籤

1,先將一個小專案簡單的分成四層 controller,service,dao,entity 2,@Controller @Controller public class TestController {     @Autowired     @Qualifier("u

typescript的一些階段性總結

類、介面的寫法跟java一樣,繼承、實現的寫法都是用extends 跟implements關鍵字。 成員宣告方式 —> 成員名字:成員型別 可選成員的宣告方式—> 成員名字?:成員型別 靜態成員在方法中使用得—>類名.靜態成員名 普通

【Xbox one S】開箱&開機&心得

前言 身為一個資深單機遊戲玩家,常年混跡在PC平臺,但內心深處一直對主機有種迷之嚮往,感覺那才是單機遊戲的正處之地,坐沙發上拿著手柄對著電視跌宕起伏才是正確的遊戲姿勢。80後的機友大概都有小時候跟小夥伴坐地上雙打小霸王的愉快記憶,兒時的記憶總是那麼深刻,任憑歲月和社會如何磨

golang 體驗 - 令人驚嘆的語法 - defer.4 - defer 對宿主函數返回值的影響

函數返回值 info 結果 bubuko img 圖片 png inf mage defer 函數可以影響宿主函數的返回值 看代碼: 調用: 輸出: 結果又讓人意外了。 coo1:因為傳引用,return 時 i = 100, return 返回的也是 100,ret

properties

() 修改 null string etc trace 後來 val 全局 不用框架的方法導入properties文件時,除了把文件放在resource下面,網上查到的方法都找不到文件,一直報空指針異常。 自己設坑:一開始為了測試方便,把property放在了本地絕對路徑下

koa2 -連接數據庫(遇到的之一)

creat windows pass 現在 error 成功 next koa tmp 用的mysql,本來想用mongo,但是windows死活安裝不成功,唉,同事說換系統是有道理的。 這裏用到了一個模塊 mysql-pro,用來連接數據庫,新建一個config.js,它

python 路--裝飾器(語法糖)--高高潮

wrapper else clas inpu 參數 index word com oca 上回我們說到,傳入的函數帶參數,這回我們要說的是,裝飾器帶參數,那麽裝飾器要如何是好。 1 u_n="keven" 2 passwd="abc123" 3 4 def au

python函數中把列表(list)當參數的""與"出"

[ ] 優化 list not 判斷 class tro 原來 PE 在Python函數中,傳遞的參數如果默認有一個為 列表(list),那麽就要註意了,此處有坑!! 入坑 def f(x,li=[]): for i in range(x):

雲計算防止之通過跑分看雲服務器的性能,給各位雲計算入門者的一些建議

rst 應該 margin 現在 class 1.5 bre pro body 各位互聯網界的朋友,今天簡單的通過“魯大師”對現在的三款主流雲服務器進行了跑分,我選擇了阿裏雲、華為雲、新睿雲三款平臺進行測試,配置均為:2核,4G內存,40G 超高IO性能系統盤,1M帶寬,本

前端爬日記(1),你在vue專案開發過程中可能會掉進的

這篇文章是記錄我在vue專案開發中遇到的各種巨坑,希望看了能對你有一些幫助,這篇文章會長期更新 1.Vue中使用sass 首先通過以下程式碼安裝sass的依賴: npm i sass-loader node-sass - s 然後在webepack.base.conf.js目錄下配置

DL CV 一些基礎技能學習

進入實驗室學習了一個月左右,記錄一下新手入門所學的基本知識,都是入門級別的教程 1、Python 快速入門:廖雪峰Python教程--> https://www.liaoxuefeng.com/ 參考書:Python學習手冊、Python CookBook以及Python官方文件 2、

在知網查重複率了嗎?

眾所周知,這是在網際網路上檢查論文的最有效和最可靠的方式。因為學校使用這個考試系統作為標準,所以從中國畢業最合適的做法是在網上尋找一份試卷的副本。軟體的其餘部分歸根結底是不準確的。也不便宜。正因為如此,知網也是最貴的,不僅很貴,而且沒有地方可以測試,所以到處都是一個坑。因此,要知道網紙搜尋需

laravel之

Ken 初入此坑,痛苦無奈啊,只能多看文件 首要問題還是網路問題,如果網速慢,也沒辦法,只能等了, 解決安裝composer的配置問題 下載 composer https://getcomposer.org/Composer-Setup.exe ​getcomp

linux (我在裡玩泥巴)(1)

時維九月,序屬三秋。潦水盡而寒潭清,煙光凝而暮山紫,我走在通往Linux的大坑裡。。。。。 由於興趣愛好使然,來到linux這個大坑裡面。感覺啥都不知道,一切都和往常不一樣,就著谷歌慢慢摸索。 第一我遇到的就是讓我的linux系統連線外網,畢竟谷歌搜尋還是優於百度的。

前端(一)--------react(在螢幕上獲取一些東西 )

Hey there, As we covered in the Welcome email, I'm gonna show you how to get started with React all by itself (without Redux/Webpack/etc). If y

【vue 指南 】vue 基礎語法

【vue 入坑指南 一 】vue 基礎語法 1.模板語法 1.1 Mustache語法 {{msg}} //在html獲取data中msg變數的值 1.2 Html賦值 v-html="" //將內容當成html標籤輸出 .html()類似 1.

【vue 指南 一】 vue 基礎語法

vue 基礎語法 1.模板語法 1.1 Mustache語法 {{msg}} //在html獲取data中msg變數的值 1.2 Html賦值 v-html="" //將內容當成html標籤輸出 .html()類似 1.3繫結屬性 v-bind:

程式設計師職所要做的一些

               最近 換了家公司,首先要報道,之後就到專案組,然後專案主管或者組長就會給你分配一些任務,一般剛進去的員工是不會讓你直接上手的 ,要麼就是讓你熟悉一下文件,熟悉文件有好幾種方式,一種是給你幾天看需求文件,一種是給你一些需要處理的bug,邊處理bu

webpack

target gradient charset jpg conf nsh abs mage .html 參考:http://www.jianshu.com/p/42e11515c10f# 序言:前面已經倒騰了grunt、gulp、fis3,今天來通過一個例子玩玩webpac