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

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

使用指向數(shù)組的指針

使用指向數(shù)組的指針

Go
不負相思意 2021-03-30 09:11:51
我正在嘗試使用Google的Go語言,并且遇到了C語言中相當基本的東西,但到目前為止我看過的文檔中似乎都沒有涉及到當我將指向某個切片的指針傳遞給函數(shù)時,我認為我們可以通過以下方式來訪問它:func conv(x []int, xlen int, h []int, hlen int, y *[]int)    for i := 0; i<xlen; i++ {        for j := 0; j<hlen; j++ {            *y[i+j] += x[i]*h[j]        }    } }但是Go編譯器不喜歡這樣:sean@spray:~/dev$ 8g broke.gobroke.go:8: invalid operation: y[i + j] (index of type *[]int)足夠公平-這只是一個猜測。我有一個相當簡單的解決方法:func conv(x []int, xlen int, h []int, hlen int, y_ *[]int) {    y := *y_    for i := 0; i<xlen; i++ {        for j := 0; j<hlen; j++ {            y[i+j] += x[i]*h[j]        }    }}但是,肯定有更好的方法。令人討厭的是,在Go上搜索信息不是很有用,因為大多數(shù)搜索字詞都會出現(xiàn)各種C / C ++ /無關(guān)的結(jié)果。
查看完整描述

3 回答

?
四季花海

TA貢獻1811條經(jīng)驗 獲得超5個贊

具有Empty的類型[],例如[]int實際上是切片,而不是數(shù)組。在Go中,數(shù)組的大小是該類型的一部分,因此要真正擁有一個數(shù)組,您需要具有[16]int,而指向的指針將是*[16]int。因此,您實際上已經(jīng)在使用切片,而指向切片的指針*[]int則是不必要的,因為切片已經(jīng)通過引用傳遞了。

例子:


package main

import "fmt"


func sumPointerToArray(a *[8]int) (sum int) {

    for _, value := range *a { sum += value }

    return

}

func sumSlice (a []int) (sum int) {

    for _, value := range a { sum += value }

    return

}

func main() {

    array := [...]int{ 1, 2, 3, 4, 5, 6, 7, 8 }

    slice := []int{ 1, 2, 3, 4 }

    fmt.Printf("sum arrray via pointer: %d\n", sumPointerToArray(&array))

    fmt.Printf("sum slice: %d\n", sumSlice(slice))

    slice = array[0:]

    fmt.Printf("sum array as slice: %d\n", sumSlice(slice))

}

編輯:自首次發(fā)布以來,已更新以反映Go中的更改。


查看完整回答
反對 回復 2021-04-26
?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

長度是數(shù)組類型的一部分,您可以通過len()內(nèi)置函數(shù)來獲取數(shù)組的長度。因此,您無需傳遞xlen,hlen參數(shù)。


在Go中,將數(shù)組傳遞給函數(shù)時,幾乎總是可以使用slice。在這種情況下,您不需要指針。實際上,您無需傳遞y參數(shù)。這是C輸出數(shù)組的方式。


在Go風格中:


func conv(x, h []int) []int {

    y := make([]int, len(x)+len(h))

    for i, v := range x { 

        for j, u := range h { 

            y[i+j] = v * u 

        }   

    }   

    return y

}

調(diào)用函數(shù):


conv(x[0:], h[0:])


查看完整回答
反對 回復 2021-04-26
  • 3 回答
  • 0 關(guān)注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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