Memisahkan Rentetan Berdasarkan Elemen Pertama dalam Golang
Apabila menghuraikan nama cawangan git, adalah penting untuk membahagikan rentetan ke alat kawalan jauh dan nama cawangan. Walaupun pada mulanya pemisahan dengan garis miring pertama kelihatan logik, cabaran timbul apabila nama cawangan mengandungi berbilang garis miring.
Pendekatan Awal
Pelaksanaan awal bergantung pada elemen pertama dalam pemisahan slice.
<code class="go">func ParseBranchname(branchString string) (remote, branchname string) { branchArray := strings.Split(branchString, "/") remote = branchArray[0] branchname = branchArray[1] return }</code>
Pendekatan Disemak
Untuk menampung nama cawangan dengan garis miring, kod telah diubah suai untuk menggabungkan elemen yang tinggal kembali pada garis miring.
<code class="go">func ParseBranchname(branchString string) (remote, branchname string) { branchArray := strings.Split(branchString, "/") remote = branchArray[0] copy(branchArray[0:], branchArray[0+1:]) branchArray[len(branchArray)-1] = "" branchArray = branchArray[:len(branchArray)-1] branchname = strings.Join(branchArray, "/") return }</code>
Penyelesaian Alternatif Menggunakan SplitN
Untuk Go versi 1.18 dan ke atas, penyelesaian alternatif tersedia menggunakan rentetan.SplitN dengan n=2. Ini mengehadkan hasil kepada hanya dua subrentetan, dengan berkesan mencapai pemisahan yang diingini.
<code class="go">func ParseBranchname(branchString string) (remote, branchname string) { branchArray := strings.SplitN(branchString, "/", 2) remote = branchArray[0] branchname = branchArray[1] return }</code>
Penyelesaian ini memudahkan proses dengan mengekstrak terus subrentetan yang diperlukan tanpa manipulasi tambahan.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Berdasarkan Elemen Pertama di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!