รันโค้ด Go (Golang) รับค่าจากผู้ใช้งานและแปลงเป็นตัวเลข แต่พอรันแล้วขึ้น assignment mismatch: 1 variable but strconv.Atoi returns 2 values ต้องแก้ไขอย่างไร
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
fmt.Print("input number : ")
scanner.Scan()
number := strconv.Atoi( scanner.Text() )
number *= 2
fmt.Println( number )
}
วิธีแก้ไข
ปัญหานี้เกิดจากคำสั่ง strconv.Atoi (แปลง String เป็น Integer) จะคืนค่า (Return) มา 2 ค่า คือค่าที่แปลง และค่ากรณีเกิด error ให้แก้ไขตรงส่วนตัวแปร number := เป็น number, _ := ความหมายของตัวขีดล่าง (_) คือให้โค้ดดังกล่าวไม่สนใจ error (skip error) สามารถเขียนโปรแกรมได้ดังนี้
func main() {
scanner := bufio.NewScanner(os.Stdin)
fmt.Print("input number : ")
scanner.Scan()
number, _ := strconv.Atoi( scanner.Text() )
number *= 2
fmt.Println( number )
}