- Phát triển data.frame theo cách hiệu quả về bộ nhớ
- phát hiện rò rỉ bộ nhớ ruby/ruby on rails
- Không thể giải quyết việc nhập android.support.v7.app
- Ổ cắm miền UNIX và bộ nhớ chia sẻ (tệp được ánh xạ)
Tôi đang cố gắng tạo một đống Fibonacci. (Chúng được đề cập nhiều lần trong lớp thuật toán mà tôi đang học và tôi muốn kiểm tra lại.) Tôi muốn heap hoạt động với bất kỳ loại nút nào, vì vậy tôi định nghĩa một giao diện Nút:
nút gói
loại giao diện Node {
AddChild(Nút khác)
Less(Node khác) bool
}
loại NodeList []Node
func (n NodeList) AddNode(một Node) {
n = thêm vào(n, a)
}
(Tôi đã sử dụng mảng []Node vì nó có tác dụng tương tự như định nghĩa heap.) Như bạn có thể thấy, giao diện Node định nghĩa hai hàm của nó với các tham số có kiểu Node. Điều này có nghĩa là hàm phải chấp nhận một đối số triển khai giao diện Node. Phần còn lại của heap sử dụng các nút này.
Trong chương trình sử dụng heap này, tôi đã tạo một kiểu triển khai giao diện Node:
gói chính
nhập "container/list"
nhập nút "./node"
Kiểu phần tử struct {
Trẻ em *list.List
Giá trị int
}
func (e Phần tử) AddChild(f Phần tử) {
e.Trẻ em.Đẩy lùi(f)
}
func (e Phần tử) Less(f Phần tử) bool {
trả về e.Value < f.Value
}
hàm main() {
a := Phần tử{list.New(), 1}
n := new(node.NodeList)
n.AddNode(a)
}
Tuy nhiên, điều này không hiệu quả. Trình biên dịch nhắc nhở Element không có định nghĩa hàm giao diện chính xác.
không thể sử dụng (kiểu Element) làm kiểu node.Node trong đối số hàm:
Phần tử không triển khai node.Node (kiểu sai cho phương thức AddChild)
có AddChild(Phần tử)
muốn AddChild(node.Node)
Vấn đề ở đây là gì? Rõ ràng Element không triển khai giao diện một cách chính xác, nhưng tôi nghĩ đó là do cách tôi định nghĩa giao diện. Có cách chính xác nào để thực hiện những gì tôi muốn làm trong Go không? Giao diện có thể tự tham chiếu đến chính nó không?
1 Câu trả lời
chức năng
func (e Phần tử) Less(f Phần tử) bool
Không phù hợp với chức năng trên giao diện
func Less(Node khác) bool
Bạn thực sự cần phải khớp với chữ ký, chẳng hạn như
func (e Phần tử) Ít hơn (f Nút) bool
Vâng, điều này có nghĩa là bạn có thể vượt qua một Nút
Còn hơn là Yếu tố
. Bạn phải kiểm tra điều này khi chạy và báo động.
Để lấy ví dụ về lý do tại sao trường hợp này có thể xảy ra và xem xét liệu mã của bạn có hợp pháp hay không, tôi đã thử như sau:
Kiểu int khác
func (o Khác) Less(f Khác) bool {
trả về o < f
}
func (o Khác) AddChild(f Khác) {}
e = GetSomeElement() // thuộc kiểu Element
var o Khác
var n Nút = e
fmt.Println(n.Ít hơn(o))
Bởi vì tôi sẽ Yếu tố
Lưu vào Nút
loại var, vì vậy bây giờ tôi có thể gọi Ít hơn()
khác Yếu tố
, vi phạm Phần tử.Less()
Kiểu. Đó là lý do tại sao việc làm như vậy là bất hợp pháp.
Về giao diện - Giao diện Go Sử dụng giao diện trong định nghĩa, 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/13281191/
Viết một giao diện chỉ dùng để tập trung hóa các giao diện khác là một thực hành tốt hay xấu? giao diện Giao diệnA: Giao diệnB, Giao diệnC { }
Có cách nào để xác định loại cụ thể từ danh sách các giao diện tùy ý không? Tôi biết về chuyển đổi kiểu nhưng tôi muốn biết tất cả các giao diện được đáp ứng. Ví dụ, cho: loại Mover giao diện { Mo
Tôi đang cố gắng tạo một đống Fibonacci. (Chúng được đề cập nhiều lần trong lớp thuật toán mà tôi đang học và tôi muốn kiểm tra nó.) Tôi muốn heap hoạt động với bất kỳ loại nút nào, vì vậy tôi định nghĩa một giao diện Nút: gói loại nút
Đây là mã của tôi: kiểu IA giao diện { FB() IB } kiểu IB giao diện { Bar() chuỗi } kiểu A struct {
Ví dụ A: // mã giả giao diện IFoo { void bar(); } lớp FooPlatformA : IFoo { void bar() {
Việc hợp nhất phản hồi leppies sẽ biên dịch - nhưng theo tôi có một số nhược điểm, tôi muốn trình biên dịch buộc mỗi lớp con phải xác định thuộc tính Uri của riêng chúng. Mã hiện tại: [] type UriUserControl() = inh
Tôi đang xây dựng một dự án lấy một thuật ngữ từ người dùng, sau đó thực hiện tìm kiếm trên Google và trả về danh sách các tiêu đề ở định dạng json. Tôi đang sử dụng API serpwow để thực hiện tìm kiếm trên Google và cố gắng phân tích phản hồi. Nhưng lỗi tôi nhận được là:
Tôi chỉ muốn triển khai một số giao diện nhất định bên trong các giao diện khác, tôi không muốn chúng có thể được kế thừa trực tiếp bởi một lớp. Cảm ơn trước! Câu trả lời hay nhất Bạn không thể làm điều này trong C# - bất kỳ lớp nào cũng có thể triển khai bất kỳ giao diện nào mà nó có quyền truy cập
Tôi mới làm quen với Go và có một số thủ thuật mà tôi vẫn 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",Operator.EQUAL,"bar") myVar.Init
Tôi có một giao diện chung mô tả quyền truy cập vào luồng đầu ra, như thế này: interface IOutput { function writeInteger(aValue:Int):Void;
Tôi đang thực hiện một dự án muốn gắn mạch cảm biến quang vào máy tính thông qua một loại giao diện nào đó (tốt nhất là USB). Tuy nhiên, vì tôi là người mới nên tôi không biết nên giải quyết vấn đề này theo hướng nào. Giả sử tôi có một USB được kết nối
Bối cảnh Tôi đang cố gắng tạo một ứng dụng đơn giản để thực sự hiểu toàn bộ ngăn xếp DDD+TDD+v.v. Mục tiêu của tôi là đưa lớp kho lưu trữ DAL vào thời gian chạy một cách động. Điều này giúp các lớp dịch vụ ứng dụng và miền của tôi có thể kiểm tra được. Tôi dự định sử dụng "DI của người nghèo" để hoàn thành hiện tại
Trong Java, việc một giao diện mở rộng một giao diện khác là hoàn toàn hợp pháp. Mối quan hệ này trong UML trông giống như mối quan hệ "mở rộng" (mũi tên liền, đóng, không tô màu) hay mối quan hệ "thực hiện" (mũi tên đứt nét, đóng, không tô màu)?
Tôi muốn tạo một giao diện với các triển khai mặc định của hàm so sánh và hàm bằng nhau. Nếu tôi xóa mọi thứ khỏi kiểu IKeyable ngoại trừ thành viên Key, thì đó là một giao diện hợp lệ miễn là tôi không thêm triển khai mặc định. từ
Giao diện kép trong COM là giao diện có thể truy cập thông qua phương thức DispInterface hoặc VTable. Bây giờ ai đó có thể cho tôi biết chính xác sự khác biệt giữa hai phương pháp này là gì không? Tôi nghĩ là V
Tôi có một phương thức lớp trả về danh sách nhân viên có thể được lặp lại. Cách tốt nhất để trả về danh sách là gì? Thông thường tôi chỉ trả về một ArrayList. Tuy nhiên, theo tôi hiểu thì giao diện này phù hợp hơn với loại hoạt động này. Giao diện nào là tốt nhất để sử dụng? Ngoài ra, tại sao lại trả về giao diện (trong
Tôi muốn khởi tạo một giao diện không tĩnh bên trong từ bên ngoài lớp bao bọc. Liệu điều này có thể thực hiện được không? Hãy xem xét đoạn mã sau: shared class AOuterClass() { Integer val = 3; shared
Tôi đã viết một giao diện cho một lớp như thế này: public interface IGenericMultipleRepository { Lazy> addresses { ge
Tôi là người mới bắt đầu học UML và hiện tôi đang tạo sơ đồ trình tự và vấn đề là tôi muốn triển khai giao diện DAO dựa trên dữ liệu đầu vào của người dùng. Cách vẽ sơ đồ trình tự chính xác để triển khai giao diện. Câu trả lời hay nhất: Bạn sẽ không ở chế độ SD
Để tạo một nhóm được xác thực có điều kiện bằng cách sử dụng xác thực jsr 303, hãy chuyển lớp giao diện cho chú thích như sau: @NotEmpty (groups={UpdateValue.class}) Tôi có nhiều giao diện khác nhau
Tôi là một lập trình viên xuất sắc, rất giỏi!