ศูนย์สำหรับสตริงคืออะไร?


133
func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key

เอกสารระบุว่า:

NewKey สร้างคีย์ใหม่ ชนิดต้องไม่ว่างเปล่า คนใดคนหนึ่งหรือทั้งสอง stringID และ intID จะต้องเป็นศูนย์ หากทั้งคู่เป็นศูนย์แสดงว่าคีย์ที่ส่งคืนจะไม่สมบูรณ์ พาเรนต์ต้องเป็นคีย์ที่สมบูรณ์หรือศูนย์

ศูนย์สำหรับสตริงคืออะไร?

ฉันพยายาม0และnilและฉันได้ข้อผิดพลาดเช่น:

cannot use nil as type string in function argument

คำตอบ:


226

นั่นคือ"":

var s string
fmt.Println(s=="") // prints "true"

สตริงต้องไม่เป็นศูนย์ (แต่*stringสามารถทำได้)

คุณสามารถทดสอบ

if stringId=="" {

หากต้องการส่งสตริงศูนย์stringIDให้ใช้

k := NewKey(c, "kind", "", 0, p)

จากข้อกำหนด :

เมื่อหน่วยความจำถูกจัดสรรเพื่อจัดเก็บค่าไม่ว่าจะผ่านการประกาศหรือการเรียกใช้หรือสร้างใหม่และไม่มีการเตรียมใช้งานอย่างชัดเจนหน่วยความจำจะได้รับการเตรียมใช้งานดีฟอลต์ แต่ละองค์ประกอบของค่าดังกล่าวจะถูกกำหนดเป็นค่าศูนย์สำหรับประเภท: false สำหรับบูลีน, 0 สำหรับจำนวนเต็ม, 0.0 สำหรับโฟลต, "" สำหรับสตริงและศูนย์สำหรับพอยน์เตอร์ฟังก์ชันอินเทอร์เฟซชิ้นส่วนแชนเนลและแผนที่


การทดสอบอย่างง่ายสำหรับสตริงค่าศูนย์และสตริง *: var s; fmt.Println (s == "", * new (* string) == nil)
Tom J

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.