最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言pointer及switch?fallthrough實(shí)戰(zhàn)詳解

 更新時(shí)間:2022年06月17日 08:27:06   作者:王中陽Go  
這篇文章主要為大家介紹了Go語言pointer及switch?fallthrough實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

今天繼續(xù)為大家更新Go語言學(xué)習(xí)記錄的文章。

首先說明pointer指針switch是兩個(gè)并沒有直接關(guān)系的知識(shí)點(diǎn),放在一篇文章中將的原因是,這兩個(gè)知識(shí)點(diǎn)在學(xué)習(xí)和使用的過程中往往被大家忽視。

pointer

go語言不存在指針操作,只有2個(gè)符號(hào): &取內(nèi)存地址 *根據(jù)內(nèi)存地址取值

應(yīng)用

n := 18
// 取地址
fmt.Println(&n)
fmt.Println(*&n)

打印結(jié)果:

查詢內(nèi)存地址的類型

p := &n
// 根據(jù)地址取值
fmt.Printf("%T\n", p) // 打印結(jié)果是*int,即int類型的指針
m := *p
fmt.Println(m) //根據(jù)地址取值

打印結(jié)果:

我們發(fā)現(xiàn)打印的結(jié)果是:*int,即int類型的指針

nil pointer

var a1 *int     //nil pointer
fmt.Println(a1) //<nil>

var a2 = new(int)
fmt.Println(a2)  //內(nèi)存地址 0xc000108010
fmt.Println(*a2) //0 根據(jù)內(nèi)存地址取值 沒有值返回0

*a2 = 100        //根據(jù)內(nèi)存地址賦值
fmt.Println(*a2) //100

打印結(jié)果:

小結(jié)

  • 對變量進(jìn)行取地址操作(&),可以獲得這個(gè)變量的指針變量
  • 指針變量的值是指針地址(內(nèi)存地址)
  • 對指針變量進(jìn)行取值操作(*),可以獲得這個(gè)指針變量指向原變量的值,即通過內(nèi)存地址取值。

switch

我們往往習(xí)慣于使用if判斷,switch可以簡化我們的if判斷。

switch的作用和if是一樣的,都是進(jìn)行條件判斷,引入switch的原因是能簡化我們的if判斷,讓代碼的可讀性更強(qiáng)。

可讀性更好

舉個(gè)栗子:

if判斷來判斷手指的名稱:

finger :=2
if finger==1 {
   fmt.Println("大拇指")
}else if finger==2 {
   fmt.Println("食指")
}else if finger==5 {
   fmt.Println("小拇指")
}else {
   fmt.Println("無效")
}

switch判斷手指名稱

finger := 2
switch finger {
case 1:
   fmt.Println("大拇指")
case 2:
   fmt.Println("食指")
case 5:
   fmt.Println("小拇指")
default:
   fmt.Println("無效")
}

對比之下立竿剪影:switch case 這種方式可讀性更好。

case后支持多個(gè)參數(shù)

舉個(gè)栗子:奇偶數(shù)判斷

switch n := 3; n {
case 1, 3, 5, 7, 9:
   fmt.Println("奇數(shù)")
case 2, 4, 6, 8, 10:
   fmt.Println("偶數(shù)")
}

case后加判斷

舉個(gè)栗子:

age := 29
switch {
case age < 18:
   fmt.Println("好好學(xué)習(xí)Z")
case age > 18 && age < 60:
   fmt.Println("好好上班")
case age > 60:
   fmt.Println("希望不用繼續(xù)上班了,哈哈")
default:
   fmt.Println(age)
}

注意:當(dāng)在case后加判斷時(shí),switch后面不需要傳入?yún)?shù),否則會(huì)報(bào)錯(cuò):類型不匹配。

fallthrough

使用建議

在一個(gè) switch 塊內(nèi),每個(gè) case 無需聲明 break 來終止 , 如果想順序執(zhí)行使用 fallthrough ;在一個(gè)switch塊內(nèi),都必須包含一個(gè) default 語句并且放在最后,即使它什么代碼也沒有。

package main

import "fmt"

func main() {

    switch {
    case false:
            fmt.Println("false1")
            fallthrough
    case true:
            fmt.Println("true1")
            fallthrough
    case false:
            fmt.Println("false2")
            fallthrough
    case true:
            fmt.Println("true2")
    case false:
            fmt.Println("false3")
            fallthrough
    default:
            fmt.Println("default case")
    }
}

總結(jié)

相信大家閱讀完這篇文章對go語言中的指針有了更深刻的理解

至于switch,只要我們心里有這個(gè)概念即可:switch作用和if一樣,當(dāng)我們意識(shí)到需要寫多個(gè)if判斷時(shí),改用switch實(shí)現(xiàn),往往會(huì)是比較好的實(shí)踐。

以上就是Go語言pointer及switch fallthrough實(shí)戰(zhàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于Go語言pointer及switch fallthrough的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang中的錯(cuò)誤處理的示例詳解

    Golang中的錯(cuò)誤處理的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Golang中的錯(cuò)誤處理的相關(guān)資料,文章中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Golang有一定幫助,需要的可以參考一下
    2022-12-12
  • 特殊字符的json序列化總結(jié)大全

    特殊字符的json序列化總結(jié)大全

    這篇文章主要給大家介紹了關(guān)于特殊字符的json序列化的相關(guān)資料,通過示例代碼分別給大家介紹了關(guān)于python 、 rust 、 java 和golang對特殊字符的json序列化操作,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 深入Golang中的sync.Pool詳解

    深入Golang中的sync.Pool詳解

    這篇文章主要介紹了深入Golang中的sync.Pool詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 深度解密 Go 語言中的 sync.map

    深度解密 Go 語言中的 sync.map

    這篇文章主要介紹了深度解密 Go 語言中的 sync.map,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Go實(shí)現(xiàn)比較時(shí)間大小

    Go實(shí)現(xiàn)比較時(shí)間大小

    這篇文章主要介紹了Go實(shí)現(xiàn)比較時(shí)間大小的方法和示例,非常的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-04-04
  • Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實(shí)戰(zhàn)指南

    Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實(shí)戰(zhàn)指南

    Go語言數(shù)據(jù)庫單元測試入門:聚焦高效、可靠的數(shù)據(jù)庫代碼驗(yàn)證!想要確保您的Go應(yīng)用數(shù)據(jù)層堅(jiān)如磐石嗎?本指南將手把手教您如何利用Go進(jìn)行數(shù)據(jù)庫單元測試,輕松揪出隱藏的bug,打造無懈可擊的數(shù)據(jù)處理邏輯,一起來探索吧!
    2024-01-01
  • golang通過node_exporter監(jiān)控GPU及cpu頻率、溫度的代碼

    golang通過node_exporter監(jiān)控GPU及cpu頻率、溫度的代碼

    node_exporter這個(gè)開源組件是配合prometheus收集主機(jī)操作系統(tǒng)層的metrics的常用組件,但是官方?jīng)]有提供GPU卡的metrics的采集,今天通過本文給大家介紹golang通過node_exporter監(jiān)控GPU及cpu頻率、溫度的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-05-05
  • go語言中decimal的用法詳解

    go語言中decimal的用法詳解

    本文主要介紹了go語言中decimal的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 獲取Golang環(huán)境變量的三種方式小結(jié)

    獲取Golang環(huán)境變量的三種方式小結(jié)

    本文介紹了Golang中獲取環(huán)境變量的三種方式,包含使用Viper包、GoDotEnv包和os包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Golang?Gin解析JSON請求數(shù)據(jù)避免出現(xiàn)EOF錯(cuò)誤

    Golang?Gin解析JSON請求數(shù)據(jù)避免出現(xiàn)EOF錯(cuò)誤

    這篇文章主要為大家介紹了Golang?Gin?優(yōu)雅地解析JSON請求數(shù)據(jù),避免ShouldBindBodyWith出現(xiàn)EOF錯(cuò)誤的源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評(píng)論

乌恰县| 益阳市| 新乐市| 湘阴县| 钟祥市| 泌阳县| 景谷| 武陟县| 老河口市| 屏南县| 平凉市| 舟山市| 新兴县| 穆棱市| 桃源县| 南丹县| 陇川县| 明星| 自贡市| 离岛区| 上饶市| 娄底市| 南岸区| 泽州县| 藁城市| 萨迦县| 杭锦旗| 锡林浩特市| 慈溪市| 德令哈市| 荔浦县| 平定县| 正镶白旗| 丹东市| 海南省| 泉州市| 阳西县| 海盐县| 贞丰县| 怀柔区| 阳朔县|