[go] Go 언어로 게임 로그인 및 계정 관리 시스템 개발하기

이번 프로젝트에서는 Go 언어를 사용하여 게임 로그인 및 계정 관리 시스템을 개발하는 방법에 대해 알아보겠습니다. Go 언어는 간단하면서도 효율적인 프로그래밍 언어로, 웹 개발과 시스템 개발에 많이 사용됩니다. 게임 로그인 및 계정 관리 시스템은 대부분 백엔드 서버에서 동작하므로, Go 언어로 개발하는 것이 적합합니다.

목차

  1. 프로젝트 구조 설정
  2. 데이터베이스 연결
  3. 로그인 기능 구현
  4. 계정 관리 기능 구현
  5. 참고 자료

프로젝트 구조 설정

먼저 프로젝트의 구조를 설정해야 합니다. Go 언어에서는 프로젝트를 모듈로 구성하며, 각 모듈은 패키지로 관리됩니다. 아래와 같이 프로젝트의 구조를 설정해봅시다.

game-login-system
  |- main.go
  |- db
     |- db.go
  |- auth
     |- login.go
  |- account
     |- account.go

위의 구조에서 main.go는 프로그램의 진입점이 되는 파일이며, db, auth, account는 각각 데이터베이스 연결, 로그인 기능, 계정 관리 기능을 담당하는 패키지입니다.

데이터베이스 연결

데이터베이스 연결을 위해 db.go 파일을 생성하고, 아래와 같이 코드를 작성해봅시다.

package db

import (
	"database/sql"
	"fmt"

	_ "github.com/go-sql-driver/mysql"
)

func ConnectDB() (*sql.DB, error) {
	db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name")
	if err != nil {
		return nil, err
	}

	err = db.Ping()
	if err != nil {
		return nil, err
	}

	fmt.Println("Successfully connected to the database")

	return db, nil
}

위의 코드는 MySQL 데이터베이스에 연결하는 함수를 정의한 것입니다. 연결하려는 데이터베이스의 정보를 적절히 수정한 뒤, sql.Open() 함수를 사용하여 데이터베이스와 연결을 시도합니다. 그 후 db.Ping() 함수를 사용하여 연결이 제대로 이루어졌는지 확인합니다.

로그인 기능 구현

로그인 기능을 위해 login.go 파일을 생성하고, 아래와 같이 코드를 작성해봅시다.

package auth

import (
	"database/sql"
	"errors"
)

func Login(db *sql.DB, username string, password string) error {
	query := "SELECT * FROM users WHERE username = ? AND password = ?"
	row := db.QueryRow(query, username, password)

	var result sql.NullString
	err := row.Scan(&result)
	if err != nil {
		if errors.Is(err, sql.ErrNoRows) {
			return errors.New("Invalid username or password")
		}
		return err
	}

	return nil
}

위의 코드는 입력받은 username과 password를 사용하여 데이터베이스에서 해당 계정을 찾는 로그인 함수입니다. db.QueryRow() 함수를 사용하여 쿼리를 실행한 뒤, 결과를 row.Scan() 함수를 사용하여 값을 읽어옵니다.

계정 관리 기능 구현

계정 관리 기능을 위해 account.go 파일을 생성하고, 아래와 같이 코드를 작성해봅시다.

package account

import "database/sql"

func CreateAccount(db *sql.DB, username string, password string) error {
	query := "INSERT INTO users (username, password) VALUES (?, ?)"
	_, err := db.Exec(query, username, password)
	if err != nil {
		return err
	}

	return nil
}

func UpdatePassword(db *sql.DB, username string, newPassword string) error {
	query := "UPDATE users SET password = ? WHERE username = ?"
	_, err := db.Exec(query, newPassword, username)
	if err != nil {
		return err
	}

	return nil
}

위의 코드는 새로운 계정을 생성하거나 비밀번호를 업데이트하는 함수입니다. db.Exec() 함수를 사용하여 쿼리를 실행하고, 결과를 반환합니다.

참고 자료

이제 Go 언어를 사용하여 게임 로그인 및 계정 관리 시스템을 개발하는 방법에 대해 알아보았습니다. 이를 바탕으로 실제 프로젝트를 시작해보세요!