亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

來自 Go 語言中文網(wǎng)微信群群友 Kade 的一道題:

package main

import (
 "fmt"
)

type T interface{}
type X string
type Y = string

func main() {
 var t T = "abc"
 var x X = "abc"
 var y Y = "abc"

 fmt.Println(t == x)
 fmt.Println(t == string(x))

 fmt.Println(t == y)
 fmt.Println(t == string(y))
}

// 輸出什么?

該鏈接可以直接運(yùn)行:https://play.studygolang.com/p/Eo47v8jgFKr。

學(xué)過 JAVA 的人是不是經(jīng)常遇到類似 String 的題?通過類似這樣的小題,我覺得可以更好地加深對(duì)一些知識(shí)點(diǎn)的理解、記憶。

您都答對(duì)了嗎?(答案見文章最后)

簡單梳理下涉及到的知識(shí)點(diǎn):

1、type X string 和 type Y = string 的區(qū)別

X 是自定義類型,底層類型是 string,X 和 string 是不同的類型;而 Y 只是 string 類型的別名,和 string 是一樣的;

2、t、x 和 y 雖然都賦值為字符串 abc,但含義不一樣

它們都能賦值為字符串的原因:

1)T 是空接口,可以存放任意類型值;

2)X 的底層類型是 string,因此字符串字面量 abc 可以直接賦值給 x,但下面的情況是不允許的:

var s string = "abc"
var x X = s

這種情況必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換:

var x X = X(s)

3)Y 是 string 的別名,自然可以直接賦值;

3、接口類型值和非接口類型值比較

該題核心就是考察這個(gè)知識(shí)點(diǎn)。Go 語言規(guī)范里有這樣的說明:

A value x of non-interface type X and a value t of interface type T are comparable when values of type X are comparable and X implements T. They are equal if t's dynamic type is identical to X and t's dynamic value is equal to x.

簡單翻譯下:

當(dāng)非接口類型 X 的值是可比較的且 X 實(shí)現(xiàn)了接口類型 T ,那么 X 的值 x 和 T 的值t 是可比較的。如果 t的動(dòng)態(tài)類型和 X 一致并且 t 的動(dòng)態(tài)值等于 x 的話,那么它們相等。

回到我們的題目:t 是接口類型 T 的值,它的動(dòng)態(tài)類型是 string,動(dòng)態(tài)值是 abc;而 x 的類型是 X,底層類型是 string,所以 t == x 返回 false,t == string(x) 返回 true。至于 Y,因?yàn)槭?string 的別名,所以 t == y 和 t == string(y) 都返回 true。

所以最后答案是:

false
true
true
true

最后提醒下大家,Go 規(guī)范還是應(yīng)該多翻翻,如果 E 文不好,這里提供了一份中文翻譯版,譯者 Bekcpear,質(zhì)量挺高的,可以中英文對(duì)照著看。https://hao.studygolang.com/golang_spec.html。

分享到:
標(biāo)簽:語言
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定