亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在學習go語言的過程踩過的坑

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2024-11-11 09:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作為一個5年的phper,這兩年公司和個人都在順應(yīng)技術(shù)趨勢,新項目慢慢從php轉(zhuǎn)向了go語言,從2021年到現(xiàn)在,筆者手上也先后開發(fā)了兩個go項目。在學習go語言的過程中也學習并總結(jié)了一些相關(guān)的東西,這篇文章就分享下自己踩過的一些坑吧。

1、函數(shù)的寫法

問題:

func main()
{
fmt.Println("php是世界上最好的語言")
}

解決:
如上所示,這種函數(shù)的定義寫法,在go語言中是錯誤的,就是 "{" 必須得和函數(shù)名在同一行。當然,這種錯誤在編輯器檢測語法的時候就會暴露出來了,正確寫法應(yīng)該如下所示:

func main() {
fmt.Println("php是世界上最好的語言")
}

2、map定義和初始化

問題:

func main() {
var m map[string]string
m["php"] = "世界上最好的語言"
m["go"]  = "世界上最好的語言"
fmt.Println(m)
}

解決:
如上所示,這種定義了map,然后直接使用的方式是錯誤的,會拋出一個panic。少了一個重要的步驟,必須使用make()函數(shù)去給map分配內(nèi)存空間,才能使用。這個對于phper來說,剛開始可能會經(jīng)常忘掉。正確使用方式如下:

func main() {
m := make(map[string]string, 2)
m["php"] = "世界上最好的語言"
m["go"]  = "世界上最好的語言"
fmt.Println(m)
}

3、json格式轉(zhuǎn)換

問題:

type Student struct {
id    int
name  string
score int
}

func main() {
s := Student{1, "小明", 99}
jsonS, _ := json.Marshal(s)
fmt.Println(string(jsonS))
}

解決:
在做web開發(fā)過程中,基本上每天都要和json格式數(shù)據(jù)打交道,所以學會轉(zhuǎn)換成json格式的數(shù)據(jù)是必備技能啊。但上面的寫法是錯誤的,打印出來的為空值。這是因為Student結(jié)構(gòu)體中的元素都是小寫的,對外是不可訪問的,所以必須改成大寫的,才能對外輸出json格式的數(shù)據(jù)。正確寫法如下:

type Student struct {
Id    int
Name  string
Score int
}

func main() {
s := Student{1, "小明", 99}
jsonS, _ := json.Marshal(s)
fmt.Println(string(jsonS))
}

4、循環(huán)中處理業(yè)務(wù)問題

問題:

func main() {
data := []int{1, 2, 3}
for _, value := range data {
value += 1
}
fmt.Println(data)
}

解決:
如上所示,我們本身是想對data里面的元素做加1操作的,但發(fā)現(xiàn)沒有成功。那是因為,我們循環(huán)所引用的變量是臨時變量,去修改的時候并不會改變數(shù)組中的原有結(jié)構(gòu)。正確的做法應(yīng)該是根據(jù)切片的索引去修改,其實就類似于php的foreach,改變數(shù)組中的值,也是需要根據(jù)索引去改的。如下所示:

func main() {
data := []int{1, 2, 3}
for key := range data {
data[key] += 1
}
fmt.Println(data)
}

5、數(shù)組和切片的區(qū)別

問題:

func change(data [2]int) {
data[0] = 4
}

func main() {
data := [2]int{1, 2}
change(data)
fmt.Println(data)
}

解決:
如上所示,運行的結(jié)果是[1 2] ,而不是[4 2] 。原因是main方法中聲明的data是數(shù)組,而go語言中的參數(shù)傳遞是值傳遞,所以不會改變原有的數(shù)組值。如果需要實現(xiàn)上述效果,可以改用切片,因為切片本身不會存儲數(shù)據(jù),他的底層數(shù)據(jù)會指向一個底層數(shù)組,因此在修改切片的元素時,會修改底層數(shù)組的相應(yīng)元素,同時共享同一個底層數(shù)組的切片也會相應(yīng)修改。正確做法如下所示:

func change(data []int) {
data[0] = 4
}

func main() {
data := []int{1, 2}
change(data)
fmt.Println(data)
}

6、:= 聲明和初始化變量

問題:

func main() {
flag := 1
if true {
flag := 2
flag++
}
fmt.Println(flag)
}

解決:
如上所示,運行結(jié)果仍然是1,而不是2或者3。上述代碼中,flag := 2,又重新聲明了一個變量flag,但它作用的僅僅是if 判斷邏輯里面的,并沒有作用到整個main函數(shù)全局中。如果要正確影響,應(yīng)將 := 改為 =,如下所示,結(jié)果則為3:

func main() {
flag := 1
if true {
flag = 2
flag++
}
fmt.Println(flag)
}

總結(jié):以上,就是本人在實際開發(fā)中,結(jié)合自己所學,遇到的一些比較常見的坑點了。當然,也是比較基礎(chǔ)的一些點。后面,我也會繼續(xù)深入學習go,總結(jié)更多的經(jīng)驗!

一個人可以被毀滅,但不可以被打敗。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4380

    瀏覽量

    64850
  • go語言
    +關(guān)注

    關(guān)注

    1

    文章

    159

    瀏覽量

    9370

原文標題:go新手常踩的坑

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用Word/Excel管理需求的10個痛點及解決方案Perforce ALM

    還在用Word/Excel做需求管理?10個“翻車信號”,都是小伙伴們~來看看你哪些?是不是也該升級到更專業(yè)的ALM工具了~
    的頭像 發(fā)表于 07-10 15:59 ?128次閱讀
    使用Word/Excel管理需求的10個痛點及解決方案Perforce ALM

    2025年G口大帶寬服務(wù)器選購指南:避這3點,省下50%成本!

    面對市場上琳瑯滿目的服務(wù)器產(chǎn)品,如何避免、實現(xiàn)成本與性能的平衡,成為企業(yè)和個人用戶關(guān)注的焦點。本文將從配置需求、避要點、成本控制三大維度,為您提供一份客觀、簡潔的2025年G口大帶寬服務(wù)器選購指南。
    的頭像 發(fā)表于 07-10 10:17 ?318次閱讀

    HarmonyOS:路由跳轉(zhuǎn)

    背景 ** 隨著華為純血版HarmonyOS NEXT的推出,鴻蒙系統(tǒng)脫離安卓的日子越來越近了。作為車企大廠的我們當然要第一時間學習鴻蒙開發(fā),提前做好技術(shù)儲備,為日后鴻蒙應(yīng)用的開發(fā)做好準備工作。于是
    的頭像 發(fā)表于 06-09 15:29 ?138次閱讀

    必看!15個C語言常見陷阱及避指南

    ? C語言雖強大,但隱藏的“”也不少!稍不留神就會導致程序崩潰、數(shù)據(jù)異常。本文整理15個高頻陷阱,助你寫出更穩(wěn)健的代碼! ? 陷阱1:運算符優(yōu)先級混淆? 問題:運算符優(yōu)先級不同可能導致計算順序錯誤
    的頭像 發(fā)表于 03-16 12:10 ?615次閱讀

    為什么學了C語言,卻寫不出像樣的項目?

    在學習編程的路上,C語言幾乎是每個程序員的“必修課”。不管你是打算從事嵌入式開發(fā)、系統(tǒng)編程,還是想要深入理解操作系統(tǒng)的底層原理,C語言都是一塊重要的基石。然而許多人在學習C
    的頭像 發(fā)表于 03-14 17:37 ?436次閱讀
    為什么學了C<b class='flag-5'>語言</b>,卻寫不出像樣的項目?

    手機喇叭氣密性檢測儀選購攻略,避免!

    參差不齊,質(zhì)量也良莠不齊。本文將為讀者提供一些選購氣密性檢測儀的攻略,幫助企業(yè)在選擇設(shè)備時避免。首先,明確檢測需求是選購氣密性檢測儀的前提。企業(yè)需要根據(jù)自身的生產(chǎn)規(guī)
    的頭像 發(fā)表于 02-05 17:04 ?617次閱讀
    手機喇叭氣密性檢測儀選購攻略,避免<b class='flag-5'>踩</b><b class='flag-5'>坑</b>!

    又給項目埋雷,RS485自動收發(fā)電路設(shè)計

    前言 這個文章的題目有點騙眼球的感覺,其實是自己過大坑,很是痛恨這個電路,希望大家以后不要了。工程師要畫這個電路時,網(wǎng)上一搜,不經(jīng)深入分析就拿來用,給項目埋了炸彈。 RS485自動收發(fā)電路 因為
    的頭像 發(fā)表于 12-06 09:59 ?1440次閱讀
    <b class='flag-5'>踩</b><b class='flag-5'>坑</b>又給項目埋雷,RS485自動收發(fā)電路設(shè)計

    自然語言處理與機器學習的關(guān)系 自然語言處理的基本概念及步驟

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能和語言學領(lǐng)域的一個分支,它致力于研究如何讓計算機能夠理解、解釋和生成人類語言。機器學習(Ma
    的頭像 發(fā)表于 12-05 15:21 ?1981次閱讀

    ADC高速采樣電路設(shè)計詳解之STM32

    一、過程 最近用STM32F334做數(shù)字電源,用到了高速ADC采集電壓電流。設(shè)計的參考電壓VREF為3.3V,輸入信號經(jīng)運放跟隨后直接接入單片機的采樣通道。一開始測試一切正常,但隨著輸入信號
    的頭像 發(fā)表于 12-02 09:27 ?2863次閱讀
    ADC高速采樣電路設(shè)計詳解之STM32<b class='flag-5'>踩</b><b class='flag-5'>坑</b>

    go語言如何解決并發(fā)問題

    作為一個后端開發(fā),日常工作中接觸最多的兩門語言就是PHP和GO了。無可否認,PHP確實是最好的語言(手動狗頭哈哈),寫起來真的很舒爽,沒有任何心智負擔,字符串和整型壓根就不用區(qū)分,開發(fā)速度真的是比
    的頭像 發(fā)表于 10-23 13:38 ?503次閱讀
    <b class='flag-5'>go</b><b class='flag-5'>語言</b>如何解決并發(fā)問題

    如何學習ARM?

    ARM 處理器的程序。此外,還需要了解一些常用的開發(fā)工具和調(diào)試工具,如交叉編譯器、調(diào)試器等。 4.實踐項目: 在學習過程中進行一些實踐項目是很有幫助的。你可以嘗試使用開發(fā)板或模擬器進行簡單的嵌入式開發(fā)
    發(fā)表于 10-11 10:42

    三十分鐘入門基礎(chǔ)Go Java小子版

    語法與 C 相近,但功能上有:內(nèi)存安全,GC,結(jié)構(gòu)形態(tài)及 CSP-style 并發(fā)計算。 適用范圍 本篇文章適用于學習其他面向?qū)ο?b class='flag-5'>語言(Java、Php),但沒有學過Go
    的頭像 發(fā)表于 08-12 14:32 ?983次閱讀
    三十分鐘入門基礎(chǔ)<b class='flag-5'>Go</b> Java小子版

    倉頡語言書籍申請

    有接觸其它的語言,主要是python,python用于機器學習,數(shù)據(jù)分析是能滿足使用,但是用于開發(fā)其他的東西就不能滿足了,我現(xiàn)在想學習另外一種語言
    發(fā)表于 08-06 08:37

    【《大語言模型應(yīng)用指南》閱讀體驗】+ 基礎(chǔ)知識學習

    今天來學習語言模型在自然語言理解方面的原理以及問答回復實現(xiàn)。 主要是基于深度學習和自然語言處理技術(shù)。 大
    發(fā)表于 08-02 11:03

    【《大語言模型應(yīng)用指南》閱讀體驗】+ 俯瞰全書

    的機會! 本人曾經(jīng)也參與語音識別產(chǎn)品的開發(fā),包括在線和離線識別,但僅是應(yīng)用語言模型實現(xiàn)端側(cè)的應(yīng)用開發(fā),相當于調(diào)用模型的接口函數(shù),實際對模型的設(shè)計、訓練和運行機理并不了解,我想通過學習《大語言
    發(fā)表于 07-21 13:35