国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Golang的類型斷言的使用

這篇具有很好參考價(jià)值的文章主要介紹了Golang的類型斷言的使用。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.把接口轉(zhuǎn)為結(jié)構(gòu)體,再塞給一個(gè)結(jié)構(gòu)體的變量

package main

//把接口轉(zhuǎn)為結(jié)構(gòu)體,再塞給一個(gè)結(jié)構(gòu)體的變量
// 結(jié)構(gòu)體=接口.(結(jié)構(gòu)體)
import "fmt"

type Point struct {
	x int
	y int
}

func main() {
	var a interface{}
	var point Point = Point{1, 2}
	a = point //ok,什么東西都能塞給空接口

	//將a賦給一個(gè)Point變量
	var b Point
	//b = a 失敗,因?yàn)榭战涌诓荒苋o具體類型
	b = a.(Point)
	fmt.Println(b)

	//類型斷言的其他案例
	var x interface{}
	var b2 float32 = 1.1
	x = b2 //變量塞給空接口,可以【類型推斷】

	y, ok := x.(float64)
	if ok == true {
		fmt.Println("convert success")
		fmt.Printf("y的類型是%T 值是=%v", y, y)
	} else {
		fmt.Println("convert fail")
	}

	fmt.Println("繼續(xù)胡扯")
}
{1 2}
convert fail
繼續(xù)胡扯   

?2.接口體現(xiàn)多態(tài):多態(tài)參數(shù)

package main

//接口,接口體現(xiàn)多態(tài):多態(tài)參數(shù)

import "fmt"

// interface不能包含任何變量
type Usb interface {
	start()
	stop()
}

// 手機(jī)實(shí)現(xiàn)User方法
type Phone struct {
	name string
}

func (p Phone) start() {
	fmt.Println("手機(jī)開始工作")
}
func (p Phone) stop() {
	fmt.Println("手機(jī)停止工作")
}
func (p Phone) Call() {
	fmt.Println("手機(jī)再打電話...")
}

type Camera struct {
	name string
}

func (c Camera) start() {
	fmt.Println("攝像機(jī)開始工作")
}
func (c Camera) stop() {
	fmt.Println("攝像機(jī)停止工作")
}

// 計(jì)算機(jī)
type Computer struct {
}

// Working方法,接受一個(gè)User接口的類型變量
func (c Computer) Working(usb Usb) {
	//通過接口變量來調(diào)用start,stop方法
	usb.start()
	//如果usb指向Phone,運(yùn)行Call方法
	//類型斷言...
	if phone, ok := usb.(Phone); ok {
		phone.Call()
	}

	usb.stop()
}

func main() {
	//定義一個(gè)usb數(shù)組,可以存放Phone和Camera結(jié)構(gòu)體變量
	//這里就體現(xiàn)出多態(tài)數(shù)組
	var usbArr [3]Usb
	usbArr[0] = Phone{"oppo"}
	usbArr[1] = Phone{"vivo"}
	usbArr[2] = Camera{"索尼"}
	fmt.Println(usbArr)
	var computer Computer
	for _, v := range usbArr {
		computer.Working(v)
	}
}
手機(jī)停止工作
手機(jī)開始工作
手機(jī)再打電話...
手機(jī)停止工作
攝像機(jī)開始工作
攝像機(jī)停止工作

3.編寫一個(gè)函數(shù),可以判斷輸入的參數(shù)是什么類型

package main

import "fmt"

//編寫一個(gè)函數(shù),可以判斷輸入的參數(shù)是什么類型

func TypeJudge(items ...interface{}) {
	for index, x := range items {
		switch x.(type) {
		case bool:
			fmt.Printf("第%v個(gè)參數(shù)是bool類型,值是%v\n", index, x)
		case float32:
			fmt.Printf("第%v個(gè)參數(shù)是float32類型,值是%v\n", index, x)
		case float64:
			fmt.Printf("第%v個(gè)參數(shù)是float64類型,值是%v\n", index, x)
		case int, int32, int64:
			fmt.Printf("第%v個(gè)參數(shù)是int類型,值是%v\n", index, x)
		case string:
			fmt.Printf("第%v個(gè)參數(shù)是string類型,值是%v\n", index, x)
		default:
			fmt.Printf("第%v個(gè)參數(shù)的類型不確定,值是%v\n", index, x)
		}
	}
}

func main() {
	var n1 float32 = 1.1
	var n2 float64 = 2.3
	var n3 int32 = 30
	var name string = "tom"
	address := "北京"
	n4 := 3000
	TypeJudge(n1, n2, n3, name, address, n4)
}
第0個(gè)參數(shù)是float32類型,值是1.1
第1個(gè)參數(shù)是float64類型,值是2.3
第2個(gè)參數(shù)是int類型,值是30     
第3個(gè)參數(shù)是string類型,值是tom 
第4個(gè)參數(shù)是string類型,值是北京
第5個(gè)參數(shù)是int類型,值是3000   

文章來源地址http://www.zghlxwxcb.cn/news/detail-704240.html

到了這里,關(guān)于Golang的類型斷言的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 編程筆記 Golang基礎(chǔ) 016 數(shù)據(jù)類型:數(shù)字類型

    在Go語言中,數(shù)字類型是其豐富數(shù)據(jù)類型的一部分,主要用于表示數(shù)值。 以下是Go語言中主要的數(shù)字類型詳解: 1. 整數(shù)類型(Integer Types) a) 固定長度整數(shù): 有符號整數(shù) : int8 :8位帶符號整數(shù),范圍從-128到127。 int16 :16位帶符號整數(shù),范圍從-32,768到32,767。 int32 :32位帶符號

    2024年02月22日
    瀏覽(12)
  • 【Golang】認(rèn)識Go語言中基本的數(shù)據(jù)類型

    【Golang】認(rèn)識Go語言中基本的數(shù)據(jù)類型

    目錄 整形 基本整型? 特殊整型 浮點(diǎn)型 布爾型 字符型 字符串轉(zhuǎn)義符? 多行字符串 字符串的常用操作 復(fù)數(shù) 我們不論在學(xué)習(xí)什么語言中,我們都要去認(rèn)識一下這個(gè)語言中的數(shù)據(jù)類型,當(dāng)然學(xué)習(xí)Go也不例外,我們也要去認(rèn)識一下其相關(guān)的數(shù)據(jù)類型,當(dāng)然這些數(shù)據(jù)類型基本上是大

    2023年04月08日
    瀏覽(24)
  • golang開發(fā)工程師-第一步:golang入門基礎(chǔ)教學(xué)

    golang開發(fā)工程師-第一步:golang入門基礎(chǔ)教學(xué)

    人生格言:好記性不如爛筆頭! 建議:看這篇文章,前提是必須會java,javascript等一門語言。你可以把golang語言看做是縫合怪;集c,java,javascript等語言優(yōu)點(diǎn)于一身。如果你沒有任何編程語言傍身,本人還是建議你去嗶站看視頻,就不要在這里浪費(fèi)時(shí)間了~~~ 優(yōu)勢一:golang代碼

    2024年02月04日
    瀏覽(19)
  • 【Golang】go編程語言適合哪些項(xiàng)目開發(fā)?

    【Golang】go編程語言適合哪些項(xiàng)目開發(fā)?

    前言 在當(dāng)今數(shù)字化時(shí)代,軟件開發(fā)已成為各行各業(yè)的核心需求之一。 而選擇適合的編程語言對于項(xiàng)目的成功開發(fā)至關(guān)重要。 本文將重點(diǎn)探討Go編程語言適合哪些項(xiàng)目開發(fā),以幫助讀者在選擇合適的編程語言時(shí)做出明智的決策。 Go 編程語言適合哪些項(xiàng)目開發(fā)? Go是由Google開發(fā)

    2024年02月04日
    瀏覽(29)
  • golang 通用的 grpc http 基礎(chǔ)開發(fā)框架

    golang 通用的 grpc http 基礎(chǔ)開發(fā)框架

    golang 通用的 grpc http 基礎(chǔ)開發(fā)框架 倉庫地址: https://github.com/webws/go-moda 倉庫一直在更新,歡迎大家吐槽和指點(diǎn) transport: 集成 http(echo、gin)和 grpc。 tracing: openTelemetry 實(shí)現(xiàn)微務(wù)鏈路追蹤 pprof: 分析性能 config: 通用的配置文件讀取模塊,支持 toml、yaml 和 json 格式。 logger: 日志系統(tǒng)

    2024年02月10日
    瀏覽(15)
  • Buf 教程 - 使用 Protobuf 生成 Golang 代碼和 Typescript 類型定義

    Buf 教程 - 使用 Protobuf 生成 Golang 代碼和 Typescript 類型定義

    Buf 是一款更高效、開發(fā)者友好的 Protobuf API 管理工具,不僅支持代碼生成,還支持插件和 Protobuf 格式化。 我們可以使用 Buf 替代原本基于 Protoc 的代碼生成流程,一方面可以統(tǒng)一管理團(tuán)隊(duì) Protoc 插件的版本、代碼生成配置,另一方面可以簡化項(xiàng)目開發(fā)配置。 本文將會用兩部分

    2024年02月08日
    瀏覽(47)
  • Golang vs Java: 一場編程語言的較量

    在IT行業(yè)飛速發(fā)展的過程中,編程語言扮演著至關(guān)重要的角色。作為開發(fā)人員,選擇合適的編程語言對于構(gòu)建高效、可靠和可維護(hù)的應(yīng)用程序至關(guān)重要。在這場編程語言的較量中,Golang和Java無疑是兩個(gè)備受青睞的選擇。我們現(xiàn)在將對這兩種語言進(jìn)行全面對比,探討它們在性能、簡潔

    2024年04月17日
    瀏覽(29)
  • 【Golang】Golang進(jìn)階系列教程--為什么 Go 語言 struct 要使用 tags

    【Golang】Golang進(jìn)階系列教程--為什么 Go 語言 struct 要使用 tags

    在 Go 語言中,struct 是一種常見的數(shù)據(jù)類型,它可以用來表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在 struct 中,我們可以定義多個(gè)字段,每個(gè)字段可以有不同的類型和名稱。 除了這些基本信息之外,Go 還提供了 struct tags,它可以用來指定 struct 中每個(gè)字段的元信息。 在本文中,我們將探討為什

    2024年02月15日
    瀏覽(40)
  • 【Golang】VsCode下開發(fā)Go語言的環(huán)境配置(超詳細(xì)圖文詳解)

    【Golang】VsCode下開發(fā)Go語言的環(huán)境配置(超詳細(xì)圖文詳解)

    ??推薦網(wǎng)站(不斷完善中):個(gè)人博客 ??個(gè)人主頁:個(gè)人主頁 ??相關(guān)專欄:CSDN專欄、個(gè)人專欄 ??立志賺錢,干活想躺,瞎分享的摸魚工程師一枚 ? 話說在前,Go語言的編碼方式是 UTF-8 ,理論上你直接使用文本進(jìn)行編輯也是可以的,當(dāng)然為了提升我們的開發(fā)效率我們還是需

    2024年02月07日
    瀏覽(27)
  • 【GoLang】哪些大公司正在使用Go語言

    【GoLang】哪些大公司正在使用Go語言

    前言: 隨著計(jì)算機(jī)科學(xué)和軟件開發(fā)的快速發(fā)展,編程語言的選擇變得愈加關(guān)鍵。 在這個(gè)多元化的編程語境中,Go語言(簡稱Golang)以其簡潔、高效、并發(fā)處理能力等特性逐漸受到業(yè)界關(guān)注。 越來越多的大型科技公司紛紛采用Go語言作為其軟件開發(fā)的首選語言,這種趨勢反映了

    2024年02月04日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包