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