2016-08-02 5 views
0

私はCの背景から来て、Cスタイルの配列を渡すとエラーが発生します。ゴランで参照渡しで配列を渡す

plzは他の人がコメントで述べたように

package main 
import "fmt" 

func f(a *int){ 
    fmt.Println(a[1]) 
} 

func main(){ 
    var a [100]int 
    a[1]=100 
    f(a) 
} 

エラー :: は、 F

+4

Goチュートリアルでこれをカバーします。 –

+4

配列とポインタは、Goで同じタイプまたは変換可能なタイプではないだけです。あなたが本当に望むのは、スライスです。スライスは、配列のビューのようなものです。 – hobbs

+0

試してみてください:https://gobyexample.com/ –

答えて

1

に引数に型* int型としてあなたを(タイプ[100] int)を使用することはできません助けておそらく配列ではなくスライスを使用したいと考えています。スライスはすでに参照渡しされているので、ポインタを指定する必要はありません。以下のmakeステートメントは、(配列に裏打ちされた)スライスを作成します。以下のコードでは、私はそれを2の長さと、関数の引数として配列の代わりにスライスを使用する必要がありますインデックス1

import (
    "fmt" 
) 

func f(a []int) { 
    fmt.Println(a[1]) 
} 

func main() { 
    a := make([]int, 2, 100) 
    a[1] = 100 
    f(a) 
} 
0

に割り当てるのあなたの目標を満たすために100の容量を与えました。 例:

func p(a int){ 
fmt.Println(a) 
} 
func main() { 
    var a = make([]int,2,10) //2 is length, 10 is capacity 
    a[0] = 10 
    p(a[0]) 
} 

配列は値型、スライスは参照型です。あなたはより多くを見ることができますhttps://blog.golang.org/go-slices-usage-and-internals

それはあなたを助けてくれる!

関連する問題