Любой лучший способ проверить соответствие в Go

Можно также использовать расширение Flask Debug Toolbar , чтобы получить более подробную информацию, встроенную в отображаемые страницы.

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension

app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'

toolbar = DebugToolbarExtension(app)

@app.route('/')
def index():
    logging.warning("See this message in Flask Debug Toolbar!")
    return ""

Запустите приложение следующим образом:

FLASK_APP=main.py FLASK_DEBUG=1 flask run

1
задан Tim Cooper 13 July 2018 в 21:22
поделиться

2 ответа

То, что вы хотите сделать, зависит от архитектуры, и Go не делает много, чтобы помочь вам определить порядок байтов вашего хоста, насколько я могу судить. Ваше решение с использованием небезопасных указателей, вероятно, лучше всего.

Если вам известен порядок байтов, в котором вы хотите поговорить и кодировать / декодировать соответственно, вы можете использовать пакет encoding/binary для этого: https://godoc.org/encoding/binary#ByteOrder

Если вам действительно нужно полагаться на порядок байтов хоста, вы можете ударить головой по дизайну анти-шаблона, который вы следует стараться избегать, если это возможно: https://commandcenter.blogspot.com/2012/04/byte-order-fallacy.html

Также здесь говорится о энергичном обсуждении golang- орехи по этой теме, с мнениями, высказанными по обе стороны дискуссии: https://groups.google.com/forum/#!topic/golang-nuts/3GEzwKfRRQw

В этой электронной почте есть предложение Russ Cox просто статически определить желаемый порядок байтов (или порядок байтов хоста) с использованием ограничений сборки:

В течение нескольких месяцев наш код имел:

var hbo = binary.LittleEndian // hack - нам нужен порядок байтов хоста!

, поэтому мы n использовать encoding.Binary для чтения вещей.

Поместите это в файл с именем byteorder_amd64.go, и он перестает быть взломанным. Это не должно быть в стандартной библиотеке.

Надеюсь, что это поможет ...

3
ответ дан Eddy R. 17 August 2018 в 12:09
поделиться

Возможно, этот код может помочь вам.

С помощью этого можно проверить порядок байтов машины:

//true = big endian, false = little endian
func getEndian() (ret bool) {
    var i int = 0x1
    bs := (*[INT_SIZE]byte)(unsafe.Pointer(&i))
    if bs[0] == 0 {
        return true
    } else {
        return false
    }

}
1
ответ дан Tecnologer 17 August 2018 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: