亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

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

pointer

go語言不存在指針操作,只有2個符號: &取內(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é)

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

switch

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

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

可讀性更好

舉個栗子:

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后支持多個參數(shù)

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

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

case后加判斷

舉個栗子:

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

注意:當在case后加判斷時,switch后面不需要傳入?yún)?shù),否則會報錯:類型不匹配。

fallthrough

使用建議

在一個 switch 塊內(nèi),每個 case 無需聲明 break 來終止 , 如果想順序執(zhí)行使用 fallthrough ;在一個switch塊內(nèi),都必須包含一個 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,只要我們心里有這個概念即可:switch作用和if一樣,當我們意識到需要寫多個if判斷時,改用switch實現(xiàn),往往會是比較好的實踐。

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

相關(guān)文章

  • 用Go語言標準庫實現(xiàn)Web服務(wù)之創(chuàng)建路由

    用Go語言標準庫實現(xiàn)Web服務(wù)之創(chuàng)建路由

    在上一節(jié)中創(chuàng)建了項目,這篇文章主要介紹如何用Go語言標準庫創(chuàng)建路由,文中有詳細的代碼示例,對大家的學習或工作有一定的幫助,感興趣的同學可以參考下
    2023-05-05
  • Go語言截取字符串函數(shù)用法

    Go語言截取字符串函數(shù)用法

    這篇文章主要介紹了Go語言截取字符串函數(shù)用法,實例分析了Go語言操作字符串的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • Go語言colly框架的快速入門

    Go語言colly框架的快速入門

    Python?中非常知名的爬蟲框架有Scrapy,Go?中也有一些?star?數(shù)較高的爬蟲框架,colly就是其中的佼佼者,它?API?簡潔,性能優(yōu)良,開箱即用,今天就來快速學習一下吧
    2023-07-07
  • Go實現(xiàn)字符串與數(shù)字的高效轉(zhuǎn)換

    Go實現(xiàn)字符串與數(shù)字的高效轉(zhuǎn)換

    在軟件開發(fā)的世界里,數(shù)據(jù)類型轉(zhuǎn)換是一項基礎(chǔ)而重要的技能,尤其在Go語言這樣類型嚴格的語言中,正確高效地進行類型轉(zhuǎn)換對于性能優(yōu)化和代碼質(zhì)量至關(guān)重要,本文給大家介紹了Go實現(xiàn)字符串與數(shù)字的高效轉(zhuǎn)換,需要的朋友可以參考下
    2024-02-02
  • 在Go語言單元測試中解決HTTP網(wǎng)絡(luò)依賴問題

    在Go語言單元測試中解決HTTP網(wǎng)絡(luò)依賴問題

    在 Go 語言中,我們需要找到一種可靠的方法來測試 HTTP 請求和響應(yīng),本文將探討在 Go 中進行 HTTP 應(yīng)用測試時,如何解決應(yīng)用程序的依賴問題,以確保我們能夠編寫出可靠的測試用例,需要的朋友可以參考下
    2023-07-07
  • Go?為什么不支持可重入鎖原理解析

    Go?為什么不支持可重入鎖原理解析

    這篇文章主要為大家介紹了Go?為什么不支持可重入鎖原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • golang接口IP限流,IP黑名單,IP白名單的實例

    golang接口IP限流,IP黑名單,IP白名單的實例

    這篇文章主要介紹了golang接口IP限流,IP黑名單,IP白名單的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言并發(fā)編程之控制并發(fā)數(shù)量實現(xiàn)實例

    Go語言并發(fā)編程之控制并發(fā)數(shù)量實現(xiàn)實例

    這篇文章主要為大家介紹了Go語言并發(fā)編程之控制并發(fā)數(shù)量實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Golang接口的定義與空接口及斷言的使用示例

    Golang接口的定義與空接口及斷言的使用示例

    在?Golang?中,接口是一種類型,它是由一組方法簽名組成的抽象集合。這篇文章主要為大家介紹了Golang接口的具體使用,希望對大家有所幫助,空接口是特殊形式的接口類型,普通的接口都有方法,而空接口沒有定義任何方法口,也因此,我們可以說所有類型都至少實現(xiàn)了空接口
    2023-04-04
  • Golang 使用Map實現(xiàn)去重與set的功能操作

    Golang 使用Map實現(xiàn)去重與set的功能操作

    這篇文章主要介紹了Golang 使用 Map 實現(xiàn)去重與 set 的功能操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論