Rumah > pembangunan bahagian belakang > Golang > Ralat tidak ditemui, skrip Go tidak berfungsi seperti yang diharapkan

Ralat tidak ditemui, skrip Go tidak berfungsi seperti yang diharapkan

WBOY
Lepaskan: 2024-02-09 12:12:27
ke hadapan
718 orang telah melayarinya

找不到错误,Go 脚本没有按预期工作

editor php Xinyi mungkin menghadapi masalah ralat tidak ditemui semasa menulis skrip Go, menyebabkan skrip tidak berfungsi seperti yang diharapkan. Ini adalah masalah biasa, tetapi satu yang boleh diselesaikan. Artikel ini akan memperkenalkan anda kepada beberapa kemungkinan punca masalah ini dan menyediakan beberapa penyelesaian untuk membantu anda menyelesaikan masalah ini dengan lebih mudah dan menjadikan skrip Go berjalan dengan lancar.

Kandungan soalan

Saya sedang cuba menyelesaikan masalah leetcode ini https://leetcode.com/problems/two-sum/ Tetapi atas sebab tertentu ia tidak berfungsi dan saya benar-benar tidak faham apa yang berlaku. Ia hanya mengembalikan [-1 -1] manakala [100 137] ialah output yang betul.

package main

import "fmt"

func main() {
    arr := []int{10, 40, 1, 4, 100, 137}
    targetVal := 237
    // twoSum(arr, targetVal)
    fmt.Println(twoSum(arr, targetVal))
}

func twoSum(nums []int, target int) []int {
    starter := 0
    // loop which is supposed to find first occurence of element that is less than target
    for i := 0; i < len(nums); i++ {
        if nums[i] < target {
            starter = i
            break
        }
    }
    // loop that iterates over remaining part of a slice (starting from nums[starter])
    for i := starter; i < len(nums); i++ {
        if target-nums[starter] == nums[i] {
            return []int{nums[starter], nums[i]}
        }
    }
    return []int{-1, -1}
}
Salin selepas log masuk

Saya tidak mempunyai sebarang kemahiran penyahpepijatan pada masa ini, jadi saya hanya memastikan nums[starter], nums[i], semua gelung berfungsi seperti yang diharapkan, saya menggunakan fmt.println() untuk log nilainya dan itu nampaknya berada di tempat yang betul, Tidak pasti apa yang salah

Penyelesaian

Masalah dengan kod anda ialah ia tidak pernah masuk ke dalam if

if target-nums[starter] == nums[i]
Salin selepas log masuk
Pembolehubah

starter akan kekal pada 0 selepas gelung pertama kerana ia hanya akan menyimpan nilai pertama kurang daripada sasaran.

Jika anda tidak bimbang tentang prestasi, fungsi o(n²) ini menghasilkan hasil yang betul:

func twoSum(nums []int, target int) []int {
    for i := 0; i < len(nums); i++ {
        for j := 0; j < len(nums); j++ {
            if nums[i]+nums[j] == target && i != j {
                return []int{j, i}
            }
        }
    }
    return []int{-1, -1}
}
Salin selepas log masuk

Atas ialah kandungan terperinci Ralat tidak ditemui, skrip Go tidak berfungsi seperti yang diharapkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan