sách gpt4 ai đã đi

giao diện - Đặt tham số cho một giao diện hoặc danh sách các giao diện

In lại Tác giả: IT Prince Thời gian cập nhật: 2023-10-29 01:11:09 25 4
mua khóa gpt4 Nike

Tôi mới chơi Go và vẫn còn một số mẹo mà tôi chưa thành thạo.

Ví dụ, tôi có một hàm mà tôi có thể gọi như thế này:

myVar.InitOperation("foo",Toán tử.EQUAL,"bar")
myVar.InitOperation("foo", Toán tử.INCLUDE,[]giao diện{}{"baz",1,"boo"})
myVar.InitOperation("foo",Toán tử.GREATER_THAN,1)

Vì vậy, tôi đã khai báo hàm này như sau:

func InitOperation(attr string, toán tử Toán tử, giá trị giao diện{}){
nếu toán tử.String() == "BAR"{
doSomething(attr, toán tử, giá trị)
} else if (operator.String() == "INCLUDE" {
doSomethingElse(attr, toán tử, giá trị)
}
// Và cứ thế liên quan đến vụ án
}

Vấn đề là khi tôi truyền vào đó một chuỗi hoặc số nguyên thì nó hoạt động tốt nhưng khi tôi truyền vào nó một mảng thì nó lại được phân tích cú pháp như một phần tử duy nhất.

Trong chức năng của tôi làmCái Gì Đó Khác Tôi đã cố gắng vượt qua giá trị, như bạn có thể đoán, tôi đã gặp phải lỗi.

Được rồi, tôi chỉ cần giá trị Đặt thành []giao diện{} Còn hơn là giao diện{}. Ở đây, mọi thứ đều ổn, nhưng khi tôi gọi làmCái gì đó , nó được phân tích như [[Giá Trị của tôi]], điều này hợp lý nhưng không phải là điều tôi mong đợi.

Câu hỏi của tôi là, có cách nào để truyền dưới dạng giá trị hoặc mảng giá trị cho màu đỏ không? []giao diện{} hoặc giao diện{}Về trường hợp này thì sao?

Cảm ơn!

1 Câu trả lời

Bạn cần một khẳng định kiểu:

func InitOperation(attr string, toán tử Toán tử, giá trị giao diện{}){
nếu toán tử.String() == "BAR"{
doSomething(attr, toán tử, giá trị)
} else if (operator.String() == "INCLUDE" {
doSomethingElse(attr, toán tử, giá trị.([]interface{}))
}
// Và cứ thế liên quan đến vụ án
}

func doSomethingElse(attr string, toán tử Toán tử, giá trị []interface{}) {
đối với _, v := giá trị phạm vi {
fmt.Println(v)
}
}

Về giao diện - thiết lập tham số cho giao diện hoặc danh sách giao diện, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/26610436/

25 4 0
Bài viết được đề xuất: Lỗi quyền NPM/Cordova: EACCES: quyền bị từ chối, scandir
Bài viết được đề xuất: Tại sao git mặc định commit sau khi merge?
Bài viết được đề xuất: BASH - xóa các tập tin cũ hơn 3 tháng?
Bài viết được đề xuất: git: squash/fixup các cam kết trước đó
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com