2015-01-20 42 views
8

Tôi đang cố gắng để chuyển đổi một kích thước mảng cố định [32]byte để biến mảng có kích thước (slice) []byte:Chuyển đổi kích thước cố định mảng vào mảng có kích thước biến tại Gò

package main 

import (
     "fmt" 
) 

func main() { 
     var a [32]byte 
     b := []byte(a) 
     fmt.Println(" %x", b) 
} 

nhưng trình biên dịch ném lỗi:

./test.go:9: cannot convert a (type [32]byte) to type []byte 

Tôi nên chuyển đổi nó như thế nào?

Trả lời

11

Sử dụng b := a[:] để lấy miếng trên mảng bạn có. Ngoài ra, hãy xem this bài đăng blog để biết thêm thông tin về mảng và lát.

9

Không có mảng có kích thước biến trong Go, chỉ các lát. Nếu bạn muốn nhận được một phần của toàn bộ mảng, hãy thực hiện điều này:

b := a[:] // Same as b := a[0:len(a)] 
+1

Lưu ý rằng các lát hoạt động giống như các mảng có kích thước biến trong đó, nếu bạn tiếp tục sử dụng 'append' trên một lát, nó sẽ phát triển theo phân bổ lại khi cần thiết. –

Các vấn đề liên quan