วิธีรับองค์ประกอบสุดท้ายของชิ้น?


167

วิธีการแยกส่วนสุดท้ายของชิ้นคืออะไร

var slice []int

slice = append(slice, 2)
slice = append(slice, 7)

slice[len(slice)-1:][0] // Retrieves the last element

วิธีการแก้ปัญหาข้างต้นใช้งานได้ แต่ดูเหมือนอึดอัดใจ

คำตอบ:


297

เพียงแค่อ่านองค์ประกอบสุดท้ายของชิ้น:

sl[len(sl)-1]

สำหรับการนำออก:

sl = sl[:len(sl)-1]

ดูหน้านี้เกี่ยวกับเทคนิคฝาน


34
ขอบคุณมัด! แม้ว่ามันจะดูโง่เง่า แต่พวกเขาก็ไม่ได้เพิ่ม-1ดัชนีของ Python ลงไป ...
Morgan Wilde

3
ฉันชอบ-1จาก Python แม้ว่ามันมักจะนำไปสู่ข้อผิดพลาดที่ยากต่อการตรวจแก้จุดบกพร่อง
weberc2

11
พวกเขาทิ้งมันไว้ข้างนอกอย่างมีสติ มันไม่ชัดเจนและมีแนวโน้มที่จะเกิดข้อผิดพลาด โดยรวมแล้วมีความรอบคอบเกี่ยวกับ 'ความหมายมากเกินไป' มันไม่ได้มีคุณสมบัติวิธีการ / การบรรทุกเกินพิกัดค่าเริ่มต้นสำหรับ params ฟังก์ชั่น ฯลฯ ซึ่ง IMHO ไปในหลอดเลือดดำปรัชญาที่คล้ายกัน ดูการสนทนานี้และอื่น ๆ : groups.google.com/forum/#!topic/golang-nuts/yn9Q6HhgWi0
Toni Cárdenas

2
ผมไม่แน่ใจ แต่ฉันได้panic: runtime error: index out of rangeสำหรับprofiles[len(profiles)-1].UserIdผมคิดว่าความยาวของชิ้นเป็น 0 ดังนั้นจึงตื่นตกใจ?
tom10271

@ tom10271 ใช่คุณไม่สามารถรับองค์ประกอบสุดท้ายของชิ้นถ้าไม่มีองค์ประกอบดังกล่าวคือ หากไม่มีองค์ประกอบเลย
Toni Cárdenas

-10

บิตหรูหราน้อยลง แต่ยังสามารถทำได้:

sl[len(sl)-1: len(sl)]

3
มันเหมือนกับsl[len(sl)-1:]แต่ส่งคืนชิ้นที่มีองค์ประกอบสุดท้ายแทนที่จะเป็นเพียงองค์ประกอบสุดท้าย play.golang.org/p/kcThrqa-64c
วิกเตอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.