第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類型不匹配! 到底怎么傳參數(shù)? insert 函數(shù)?

類型不匹配! 到底怎么傳參數(shù)? insert 函數(shù)?

Go
狐的傳說 2023-02-11 10:14:20
func insert(slice *[]interface{}, index int, value interface{}) {rear := append([]interface{}{}, (*slice)[index:]...)*slice = append(append((*slice)[:index], value), rear...)}s1 := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"}insert(s1, 5, "A")//報錯 cannot use str (type []string) as type *[]interface {} in argument to insert如何把insert函數(shù)interface改成string,不只能用string了? interface怎么傳?
查看完整描述

2 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個贊

給你個fmt.Printf的例子:
echo 函數(shù)不定參數(shù),其調(diào)用fmt.Printf進(jìn)行輸出,因?yàn)関是一個slice,所以傳遞給fmt.Printf的時候需要 v...,就類似append(slice1,slice2...)

package main

import (
"fmt"
)

func main() {
echo("Hello %s, I am %s\n", "Bob", "John")
}

func echo(format string, v ... interface{}) {
fmt.Printf(format, v...)
}

 


查看完整回答
反對 回復(fù) 2023-02-15
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個贊

Golang的interface,和別的語言是不同的。它不需要顯式的implements,只要某個struct實(shí)現(xiàn)了interface里的所有函數(shù),編譯器會自動認(rèn)為它實(shí)現(xiàn)了這個interface。
  SICP里詳細(xì)解釋了為什么同一個接口,需要根據(jù)不同的數(shù)據(jù)類型,有不同的實(shí)現(xiàn);以及如何做到這一點(diǎn)。在這里沒有OO的概念,先把OO放到一邊,從原理上看一下這是怎么做到的。
  先把大概原理放在這里,然后再舉例子。為了實(shí)現(xiàn)多態(tài),需要維護(hù)一張全局的查找表,它的功能是根據(jù)類型名和方法名,返回對應(yīng)的函數(shù)入口。當(dāng)我增加了一種類型,需要把新類型的名字、相應(yīng)的方法名和實(shí)際函數(shù)入口添加到表里。這基本上就是所謂的動態(tài)綁定了,類似于C++里的vtable。對于SICP中使用的lisp語言來說,這些工作需要手動完成。而對于java,則通過implements完成了這項(xiàng)工作。而golang則用了更加激進(jìn)的方式,連implements都省了,編譯器自動發(fā)現(xiàn)自動綁定。

查看完整回答
反對 回復(fù) 2023-02-15
  • 2 回答
  • 0 關(guān)注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號